From 25e083ba71acb3c8b9eadf81b675ae15d94a2ef6 Mon Sep 17 00:00:00 2001 From: Gabriel Augendre Date: Tue, 26 Nov 2024 18:26:45 +0100 Subject: [PATCH] refactor font loading --- font.go => fonts/cache.go | 8 ++-- fonts/fonts.go | 65 ++++++++++++++++++++++++++++---- fonts/ttf/OpenSans-SemiBold.ttf | Bin 0 -> 130760 bytes img.go | 35 +++++++++-------- main.go | 27 +++---------- 5 files changed, 84 insertions(+), 51 deletions(-) rename font.go => fonts/cache.go (55%) create mode 100644 fonts/ttf/OpenSans-SemiBold.ttf diff --git a/font.go b/fonts/cache.go similarity index 55% rename from font.go rename to fonts/cache.go index 8d31304..88cba84 100644 --- a/font.go +++ b/fonts/cache.go @@ -1,4 +1,4 @@ -package main +package fonts import ( "fmt" @@ -6,13 +6,13 @@ import ( "github.com/llgcode/draw2d" ) -type MyFontCache map[string]*truetype.Font +type Cache map[string]*truetype.Font -func (fc MyFontCache) Store(fd draw2d.FontData, font *truetype.Font) { +func (fc Cache) Store(fd draw2d.FontData, font *truetype.Font) { fc[fd.Name] = font } -func (fc MyFontCache) Load(fd draw2d.FontData) (*truetype.Font, error) { +func (fc Cache) Load(fd draw2d.FontData) (*truetype.Font, error) { font, stored := fc[fd.Name] if !stored { return nil, fmt.Errorf("font %s is not stored in font cache", fd.Name) diff --git a/fonts/fonts.go b/fonts/fonts.go index eae68cc..526bdbc 100644 --- a/fonts/fonts.go +++ b/fonts/fonts.go @@ -1,20 +1,71 @@ package fonts -import _ "embed" - -//go:embed ttf/OpenSans-Bold.ttf -var Bold []byte +import ( + _ "embed" + "fmt" + "github.com/golang/freetype/truetype" + "github.com/llgcode/draw2d" +) //go:embed ttf/OpenSans-Regular.ttf -var Regular []byte +var RegularTTF []byte + +//go:embed ttf/OpenSans-SemiBold.ttf +var SemiBoldTTF []byte + +//go:embed ttf/OpenSans-Bold.ttf +var BoldTTF []byte //go:embed ttf/OpenSans-Italic.ttf -var Italic []byte +var ItalicTTF []byte //go:embed ttf/Phosphor.ttf -var Icons []byte +var IconsTTF []byte const ( IconXOffset = 38 IconYOffset = 2 ) + +const ( + Regular = "regular" + SemiBold = "semibold" + Bold = "bold" + Italic = "italic" + Icons = "icons" +) + +func NewCache() (Cache, error) { + cache := Cache{} + + fonts := []struct { + ttf []byte + name string + }{ + {RegularTTF, Regular}, + {SemiBoldTTF, SemiBold}, + {BoldTTF, Bold}, + {ItalicTTF, Italic}, + {IconsTTF, Icons}, + } + + for _, font := range fonts { + err := loadFont(cache, font.ttf, font.name) + if err != nil { + return cache, fmt.Errorf("loading font %q: %w", font.name, err) + } + } + + return cache, nil +} + +func loadFont(fontCache Cache, ttf []byte, name string) error { + font, err := truetype.Parse(ttf) + if err != nil { + return fmt.Errorf("parsing font %v: %w", name, err) + } + + fontCache.Store(draw2d.FontData{Name: name}, font) + + return nil +} diff --git a/fonts/ttf/OpenSans-SemiBold.ttf b/fonts/ttf/OpenSans-SemiBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e5ab464431a87f31075f743d1199081278996827 GIT binary patch literal 130760 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ⓈGz!6dGy@2~f3} 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 literal 0 HcmV?d00001 diff --git a/img.go b/img.go index 8696690..327d1a3 100644 --- a/img.go +++ b/img.go @@ -149,8 +149,7 @@ func getImg(ctx context.Context, nowFunc func() time.Time, transportsClient *tra } func drawMsg(gc *draw2dimg.GraphicContext, quote string) { - text(gc, quote, 15, leftX, 450, fontItalic) - + text(gc, quote, 15, leftX, 450, fonts.Italic) } func drawWeather(ctx context.Context, gc *draw2dimg.GraphicContext, wthr *weather.Prevision) { @@ -172,15 +171,15 @@ func drawWeather(ctx context.Context, gc *draw2dimg.GraphicContext, wthr *weathe slog.ErrorContext(ctx, "Failed to draw weather icon", "err", err) } - text(gc, formatTemp(wthr.Current.Temp), 23, leftX, 125, fontRegular) + text(gc, formatTemp(wthr.Current.Temp), 23, leftX, 125, fonts.Regular) const xAlign = 120 const fontSize = 18 - 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) + text(gc, "journée", fontSize, xAlign, 35, fonts.Bold) + text(gc, "max "+formatTemp(daily.Temp.Max), fontSize, xAlign, 65, fonts.Regular) + text(gc, fmt.Sprintf("pluie %v%%", int(math.Round(daily.Pop*100))), fontSize, xAlign, 95, fonts.Regular) + text(gc, dailyWeather.Description, fontSize, xAlign, 125, fonts.Regular) } func drawWeatherIcon(gc *draw2dimg.GraphicContext, dailyWeather weather.Weather) error { @@ -209,21 +208,21 @@ func drawVelov(gc *draw2dimg.GraphicContext, station *transports.Station, yOffse return } - text(gc, station.Name, 23, rightX, yOffset, fontBold) + text(gc, station.Name, 23, rightX, yOffset, fonts.Bold) yOffset += 30 - text(gc, "\uE0D6", 22, rightX, yOffset+fonts.IconYOffset, fontIcons) // bike icon - text(gc, strconv.Itoa(station.BikesAvailable), 22, rightX+fonts.IconXOffset, yOffset, fontRegular) + text(gc, "\uE0D6", 22, rightX, yOffset+fonts.IconYOffset, fonts.Icons) // bike icon + text(gc, strconv.Itoa(station.BikesAvailable), 22, rightX+fonts.IconXOffset, yOffset, fonts.Regular) nextCol := rightX + 100.0 - text(gc, "\uEC08", 22, nextCol, yOffset+fonts.IconYOffset, fontIcons) // parking icon - text(gc, strconv.Itoa(station.DocksAvailable), 22, nextCol+fonts.IconXOffset, yOffset, fontRegular) + text(gc, "\uEC08", 22, nextCol, yOffset+fonts.IconYOffset, fonts.Icons) // parking icon + text(gc, strconv.Itoa(station.DocksAvailable), 22, nextCol+fonts.IconXOffset, yOffset, fonts.Regular) } func drawDate(gc *draw2dimg.GraphicContext, now time.Time) { - text(gc, now.Format("15:04"), 110, leftX, 300, fontBold) - text(gc, getDate(now), 30, leftX, 345, fontRegular) + text(gc, now.Format("15:04"), 110, leftX, 300, fonts.Bold) + text(gc, getDate(now), 30, leftX, 345, fonts.Regular) } func drawFete(gc *draw2dimg.GraphicContext, fetes *fete.Fete) { @@ -231,7 +230,7 @@ func drawFete(gc *draw2dimg.GraphicContext, fetes *fete.Fete) { return } - text(gc, fmt.Sprintf("On fête les %s", fetes.Name), 18, leftX, 380, fontRegular) + text(gc, fmt.Sprintf("On fête les %s", fetes.Name), 18, leftX, 380, fonts.Regular) } func drawTCL(gc *draw2dimg.GraphicContext, passages *transports.Passages, yoffset float64) { @@ -241,11 +240,11 @@ func drawTCL(gc *draw2dimg.GraphicContext, passages *transports.Passages, yoffse for i, passage := range passages.Passages { x := float64(rightX + i*120) - text(gc, "\uE106", 23, x, yoffset+fonts.IconYOffset, fontIcons) - text(gc, passage.Ligne, 23, x+fonts.IconXOffset, yoffset, fontBold) + text(gc, "\uE106", 23, x, yoffset+fonts.IconYOffset, fonts.Icons) + text(gc, passage.Ligne, 23, x+fonts.IconXOffset, yoffset, fonts.Bold) for j, delay := range passage.Delays { y := yoffset + float64(j+1)*35 - text(gc, delay, 22, x, y, fontRegular) + text(gc, delay, 22, x, y, fonts.Regular) if j >= 2 { // limit number of delays displayed break } diff --git a/main.go b/main.go index 84c17df..f34f36f 100644 --- a/main.go +++ b/main.go @@ -7,7 +7,6 @@ import ( "github.com/Crocmagnon/display-epaper/home_assistant" "github.com/Crocmagnon/display-epaper/transports" "github.com/Crocmagnon/display-epaper/weather" - "github.com/golang/freetype/truetype" "github.com/llgcode/draw2d" _ "golang.org/x/image/bmp" "log/slog" @@ -15,23 +14,16 @@ import ( "time" ) -const ( - fontRegular = "regular" - fontBold = "bold" - fontItalic = "italic" - fontIcons = "icons" -) - func main() { ctx := context.Background() slog.InfoContext(ctx, "starting...") - fontCache := MyFontCache{} - loadFont(ctx, fontCache, fonts.Regular, fontRegular) - loadFont(ctx, fontCache, fonts.Bold, fontBold) - loadFont(ctx, fontCache, fonts.Italic, fontItalic) - loadFont(ctx, fontCache, fonts.Icons, fontIcons) + fontCache, err := fonts.NewCache() + if err != nil { + slog.ErrorContext(ctx, "could not create font cache", "error", err.Error()) + os.Exit(1) + } draw2d.SetFontCache(fontCache) @@ -85,12 +77,3 @@ func main() { slog.InfoContext(ctx, "done") } - -func loadFont(ctx context.Context, fontCache MyFontCache, ttf []byte, name string) { - font, err := truetype.Parse(ttf) - if err != nil { - slog.ErrorContext(ctx, "error loading font", "err", err) - os.Exit(1) - } - fontCache.Store(draw2d.FontData{Name: name}, font) -}