From d23dcd73822fb7762eb50e6f5fcb5bdb5b599e74 Mon Sep 17 00:00:00 2001 From: Justin Hawkins Date: Tue, 28 Apr 2026 11:59:04 +0930 Subject: [PATCH] WIP --- .vscode/settings.json | 3 +++ main.go | 36 +++++++++++++++++++++++++----------- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index cb355c4..5cdfa4c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,5 +4,8 @@ "fpdf", "qrcode", "yeqown" + ], + "cSpell.ignoreWords": [ + "Hjqy" ] } \ No newline at end of file diff --git a/main.go b/main.go index 0f6b7e7..37a6182 100644 --- a/main.go +++ b/main.go @@ -11,13 +11,16 @@ import ( var cols = 4 var rows = 4 -var qrSize = 50.0 -var fontSize = 32.0 // pts +var qrSize = 48.0 +var fontSize = 25.0 // pts var fontSizeMM = fontSize / 72 * 25.4 -var text = "meow!" +var text = "Á[Hjqy]|" +var font = "Courier" -var textTopPadding = 5.0 -var qrTopPadding = 5.0 +var textTopPadding = 0.0 // typically none is required +var qrTopPadding = 5.0 // below the baseline of the text, remember the descenders like 'y', 'q' + +var requiredCellPadding = 3.0 // half on each side, effectively // var probably some padding instead of offsets for qr/font placement @@ -79,19 +82,25 @@ func main() { // panic(info.Height()) pdf.AddPage() - pdf.SetFont("Arial", "B", float64(fontSize)) + pdf.SetFont(font, "B", float64(fontSize)) textWidth := pdf.GetStringWidth(text) colWidth := pageWidth / float64(cols) rowHeight := pageHeight / float64(rows) - if textTopPadding+fontSizeMM+qrTopPadding+qrSize > rowHeight { - slog.Warn("qr is too big for row") + cellHeight := textTopPadding + fontSizeMM + qrTopPadding + qrSize + cellWidth := qrSize + + if cellHeight > rowHeight-requiredCellPadding { + + slog.Warn("qr is too big for row", "cell_height", cellHeight, "row_height", rowHeight) } - if qrSize > colWidth { - slog.Warn("qr is too big for column") + slog.Info("check width", "cell_width", cellWidth, "col_width", colWidth) + + if cellWidth > colWidth-requiredCellPadding { + slog.Warn("qr is too big for column", "cell_width", cellWidth, "col_width", colWidth) } if textWidth > colWidth { @@ -103,10 +112,15 @@ func main() { topLeftX := colWidth * float64(colIdx) topLeftY := rowHeight * float64(rowIdx) + // draw box + pdf.SetDashPattern([]float64{1, 1}, 0) + pdf.Rect(topLeftX, topLeftY, colWidth, rowHeight, "D") + pdf.SetDashPattern([]float64{}, 0) + // label at the top pdf.Text( topLeftX+colWidth/2-textWidth/2, - topLeftY+textTopPadding+fontSizeMM, + topLeftY+fontSizeMM+textTopPadding, text, // +fmt.Sprintf("%d/%d", rowIdx, colIdx) )