mirror of
https://github.com/wahyd4/badger.git
synced 2026-08-09 05:15:58 +10:00
87 lines
2.0 KiB
Go
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)
|
|
}
|