6 Commits

Author SHA1 Message Date
032387c02d fix: position reference footer below content to prevent overlap (Closes #25) (#28) 2026-03-17 14:59:48 +01:00
shahondin1624
b339c10ca0 feat: use Worte/Weise labels and render metadata at page bottom (Closes #5)
Add metadata_labels ("abbreviated"/"german") and metadata_position
("top"/"bottom") options to LayoutConfig. German labels use "Worte:" and
"Weise:" instead of "T:" and "M:", with "Worte und Weise:" when lyricist
and composer are the same person. Metadata at bottom position renders
after notes with word-wrapping. MeasurementEngine accounts for two-line
metadata in German label mode.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 09:46:06 +01:00
shahondin1624
8dca7d7131 feat: support inline images within song pages (Closes #2)
Add {image: path} directive to embed images at any position within a song's
sections. SongLine gains an optional imagePath field; when set, the line
represents an inline image rather than chord/lyric content. The renderer
scales and centers images within the content width. MeasurementEngine
reserves 40mm height per inline image for layout calculations.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 09:45:26 +01:00
shahondin1624
8c92c7d78b feat: support rich multi-paragraph notes with formatting (Closes #7)
Add {start_of_notes}/{end_of_notes} (and short forms {son}/{eon}) block
directives to ChordProParser for multi-paragraph note content. Blank lines
within the block separate paragraphs. The renderer now word-wraps note
paragraphs to fit within the content width. MeasurementEngine estimates
wrapped line count for more accurate height calculations.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 09:38:25 +01:00
shahondin1624
ba035159f7 feat: display reference book page numbers in song page footer (Closes #3)
Render a two-row footer at the bottom of each song page showing reference
book abbreviations as column headers with corresponding page numbers below.
A thin separator line is drawn above the footer. MeasurementEngine now
reserves vertical space for the reference footer when reference books are
configured and the song has references.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 09:32:52 +01:00
shahondin1624
e386501b57 Initial implementation of songbook toolset
Kotlin/JVM multi-module project for generating a scout songbook PDF
from ChordPro-format text files. Includes ChordPro parser, layout engine
with greedy spread packing for double-page songs, OpenPDF renderer,
CLI (Clikt), Compose Desktop GUI, and 5 sample songs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 08:35:42 +01:00