use opensans font + display current weather icon

This commit is contained in:
Gabriel Augendre 2024-11-26 02:15:59 +01:00
parent 0378809eac
commit a59b175666
6 changed files with 30 additions and 13 deletions

12
fonts/fonts.go Normal file
View file

@ -0,0 +1,12 @@
package fonts
import _ "embed"
//go:embed ttf/OpenSans-Bold.ttf
var Bold []byte
//go:embed ttf/OpenSans-Regular.ttf
var Regular []byte
//go:embed ttf/OpenSans-Italic.ttf
var Italic []byte

BIN
fonts/ttf/OpenSans-Bold.ttf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

18
img.go
View file

@ -136,7 +136,7 @@ func getImg(ctx context.Context, nowFunc func() time.Time, transportsClient *tra
msg = quotes.GetQuote(nowFunc()) msg = quotes.GetQuote(nowFunc())
} }
drawTCL(gc, bus, 55) drawTCL(gc, bus, 45)
drawTCL(gc, tram, 205) drawTCL(gc, tram, 205)
drawVelov(gc, velovRoc, 365) drawVelov(gc, velovRoc, 365)
drawDate(gc, nowFunc()) drawDate(gc, nowFunc())
@ -148,7 +148,7 @@ func getImg(ctx context.Context, nowFunc func() time.Time, transportsClient *tra
} }
func drawMsg(gc *draw2dimg.GraphicContext, quote string) { func drawMsg(gc *draw2dimg.GraphicContext, quote string) {
text(gc, quote, 15, leftX, 450, fontRegular) text(gc, quote, 15, leftX, 450, fontItalic)
} }
@ -166,16 +166,20 @@ func drawWeather(ctx context.Context, gc *draw2dimg.GraphicContext, wthr *weathe
daily := wthr.Daily[0] daily := wthr.Daily[0]
dailyWeather := daily.Weather[0] dailyWeather := daily.Weather[0]
err := drawWeatherIcon(gc, dailyWeather) err := drawWeatherIcon(gc, wthr.Current.Weather[0])
if err != nil { if err != nil {
slog.ErrorContext(ctx, "Failed to draw weather icon", "err", err) slog.ErrorContext(ctx, "Failed to draw weather icon", "err", err)
} }
text(gc, formatTemp(wthr.Current.Temp), 23, leftX, 120, fontRegular) text(gc, formatTemp(wthr.Current.Temp), 23, leftX, 125, fontRegular)
text(gc, "max "+formatTemp(daily.Temp.Max), 18, 120, 45, fontRegular) const xAlign = 120
text(gc, fmt.Sprintf("pluie %v%%", int(math.Round(daily.Pop*100))), 18, 120, 80, fontRegular) const fontSize = 18
text(gc, dailyWeather.Description, 18, 120, 115, fontRegular)
text(gc, "journée", fontSize, xAlign, 35, fontBold)
text(gc, "max "+formatTemp(daily.Temp.Max), fontSize, xAlign, 65, fontRegular)
text(gc, fmt.Sprintf("pluie %v%%", int(math.Round(daily.Pop*100))), fontSize, xAlign, 95, fontRegular)
text(gc, dailyWeather.Description, fontSize, xAlign, 125, fontRegular)
} }
func drawWeatherIcon(gc *draw2dimg.GraphicContext, dailyWeather weather.Weather) error { func drawWeatherIcon(gc *draw2dimg.GraphicContext, dailyWeather weather.Weather) error {

13
main.go
View file

@ -3,22 +3,22 @@ package main
import ( import (
"context" "context"
"github.com/Crocmagnon/display-epaper/fete" "github.com/Crocmagnon/display-epaper/fete"
"github.com/Crocmagnon/display-epaper/fonts"
"github.com/Crocmagnon/display-epaper/home_assistant" "github.com/Crocmagnon/display-epaper/home_assistant"
"github.com/Crocmagnon/display-epaper/transports" "github.com/Crocmagnon/display-epaper/transports"
"github.com/Crocmagnon/display-epaper/weather" "github.com/Crocmagnon/display-epaper/weather"
"github.com/golang/freetype/truetype" "github.com/golang/freetype/truetype"
"github.com/llgcode/draw2d" "github.com/llgcode/draw2d"
_ "golang.org/x/image/bmp" _ "golang.org/x/image/bmp"
"golang.org/x/image/font/gofont/gobold"
"golang.org/x/image/font/gofont/goregular"
"log/slog" "log/slog"
"os" "os"
"time" "time"
) )
const ( const (
fontRegular = "goregular" fontRegular = "regular"
fontBold = "gobold" fontBold = "bold"
fontItalic = "italic"
) )
func main() { func main() {
@ -27,8 +27,9 @@ func main() {
slog.InfoContext(ctx, "starting...") slog.InfoContext(ctx, "starting...")
fontCache := MyFontCache{} fontCache := MyFontCache{}
loadFont(ctx, fontCache, goregular.TTF, fontRegular) loadFont(ctx, fontCache, fonts.Regular, fontRegular)
loadFont(ctx, fontCache, gobold.TTF, fontBold) loadFont(ctx, fontCache, fonts.Bold, fontBold)
loadFont(ctx, fontCache, fonts.Italic, fontItalic)
draw2d.SetFontCache(fontCache) draw2d.SetFontCache(fontCache)