Files
badger/main.go
T
2020-07-10 11:42:04 +10:00

87 lines
2.0 KiB
Go

package main
import (
"fmt"
"image/color"
"log"
"math/rand"
"path/filepath"
"strconv"
"github.com/fogleman/gg"
"github.com/gin-gonic/gin"
)
const (
backgroundImageFilename = "images/bg.png"
radius = 0
)
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
r.GET("/hi.png", func(c *gin.Context) {
if err := serveFile(c); err != nil {
fmt.Println(err.Error())
}
})
log.Fatal(r.Run())
}
func serveFile(c *gin.Context) error {
dc := gg.NewContext(100, 20)
// todo, more programming
// backgroundImage, err := gg.LoadImage(backgroundImageFilename)
// if err != nil {
// return fmt.Errorf("failed to load background image %w", err)
// }
// dc.DrawImage(backgroundImage, 0, 0)
// margin := 10.0
// x := margin
// y := margin
// w := float64(dc.Width()) - (2.0 * margin)
// h := float64(dc.Height()) - (2.0 * margin)
dc.SetColor(color.RGBA{90, 90, 90, 255})
dc.DrawRoundedRectangle(0, 0, float64(dc.Width()), float64(dc.Height()), radius)
dc.Fill()
//green
dc.SetColor(color.RGBA{49, 197, 83, 255})
labelStartX := float64(dc.Width()) * (1 - 0.618)
dc.DrawRectangle(0, 0, labelStartX, float64(dc.Height()))
dc.Fill()
fontPath := filepath.Join("fonts", "SourceCodePro-Regular.ttf")
if err := dc.LoadFontFace(fontPath, 14); err != nil {
return fmt.Errorf("load font %w", err)
}
dc.SetColor(color.RGBA{255, 255, 255, 255})
// label
text := "Hi"
marginX := 5.0
marginY := -5.0
_, textHeight := dc.MeasureString(text)
y := float64(dc.Height()) - textHeight - marginY
dc.DrawString(text, marginX, y)
// value
valueText := strconv.Itoa(rand.Intn(1000))
valueWidth, valueHeight := dc.MeasureString(valueText)
fmt.Println(valueWidth, valueHeight)
dc.DrawString(valueText, float64(dc.Width())-valueWidth-marginX, float64(dc.Height())-valueHeight-marginY)
w := c.Writer
c.Status(200)
w.Header().Set("Content-Type", "image/png")
return dc.EncodePNG(w)
}