Versions in this module Expand all Collapse all v1 v1.9.0 Mar 22, 2026 Changes in this version + const PDFFontSizeDelta + func InstructionLineCount(pdf *fpdf.Fpdf, width float64, rules []string) int + func RenderInstructions(pdf *fpdf.Fpdf, x, y, width float64, rules []string) int + type NetwalkData struct + Masks [][]uint8 + RootX int + RootY int + Rotations [][]uint8 + Size int + func ParseNetwalkPrintData(saveData []byte) (*NetwalkData, error) type RenderConfig + SheetLayout SheetLayout + type SheetLayout int + const SheetLayoutDuplexBooklet + const SheetLayoutHalfLetter v1.8.0 Mar 8, 2026 Changes in this version + func HasPrintAdapter(gameType string) bool + func IsNilPrintPayload(payload any) bool + func RegisterPrintAdapter(adapter PrintAdapter) + type PrintAdapter interface + Aliases func() []string + BuildPDFPayload func(save []byte) (any, error) + CanonicalGameType func() string + RenderPDFBody func(pdf *fpdf.Fpdf, payload any) error + func LookupPrintAdapter(gameType string) (PrintAdapter, bool) type SudokuData + func ParseSudokuRGBPrintData(saveData []byte) (*SudokuData, error) type TakuzuData + HorizontalRelations [][]string + VerticalRelations [][]string + func ParseTakuzuPlusPrintData(saveData []byte) (*TakuzuData, error) v1.7.0 Mar 6, 2026 Changes in this version + const DimTextGray + const ExportSchemaV1 + const InstructionLineHMM + const MajorGridLineMM + const OuterBorderLineMM + const PrimaryTextGray + const PuzzleBottomInsetMM + const PuzzleWordBankFontSize + const PuzzleWordBankHeadSize + const RuleTextGray + const SansFontFamily + const SecondaryTextGray + const ThinGridLineMM + const WordSearchGridGapMM + func CenteredOrigin(area Rect, cols, rows int, cellSize float64) (float64, float64) + func ClampStandardCellFontSize(fontSize float64) float64 + func FitCompactCellSize(cols, rows int, area Rect) float64 + func FitHashiCellSize(cols, rows int, area Rect) float64 + func FitNonogramCellSize(cols, rows int, area Rect) float64 + func FitSudokuCellSize(cols, rows int, area Rect) float64 + func FitTableCellSize(cols, rows int, area Rect) float64 + func FitWordSearchCellSize(cols, rows int, area Rect) float64 + func InstructionY(boardBottom, pageH float64, lineCount int) float64 + func SetInstructionStyle(pdf *fpdf.Fpdf) + func StandardCellFontSize(cellSize, scale float64) float64 + func WritePDF(outputPath string, docs []PackDocument, puzzles []Puzzle, cfg RenderConfig) error + type DifficultyConfidence string + const DifficultyConfidenceHigh + const DifficultyConfidenceMedium + type FillominoData struct + Givens [][]int + Height int + Width int + func ParseFillominoPrintData(saveData []byte) (*FillominoData, error) + type GridTable struct + HasHeaderCol bool + HasHeaderRow bool + Rows [][]string + type HashiData struct + Height int + Islands []HashiIsland + Width int + func ParseHashiPrintData(saveData []byte) (*HashiData, error) + type HashiIsland struct + Required int + X int + Y int + type HitoriData struct + Numbers [][]string + Size int + func ParseHitoriPrintData(saveData []byte) (*HitoriData, error) + type JSONLPackMeta struct + Category string + Count int + Generated string + ModeSelection string + Seed string + Version string + type JSONLPuzzle struct + Game string + Index int + Mode string + Name string + Save json.RawMessage + type JSONLRecord struct + Pack JSONLPackMeta + Puzzle JSONLPuzzle + Schema string + type NonogramData struct + ColHints [][]int + Grid [][]string + Height int + RowHints [][]int + Width int + func ParseNonogramPrintData(saveData []byte) (*NonogramData, error) + type NurikabeData struct + Clues [][]int + Height int + Width int + func ParseNurikabePrintData(saveData []byte) (*NurikabeData, error) + type PackDocument struct + Metadata PackMetadata + Puzzles []Puzzle + SourcePath string + func ParseFile(path string) (PackDocument, error) + func ParseFiles(paths []string) ([]PackDocument, error) + func ParseJSONLFile(path string) (PackDocument, error) + func ParseJSONLFiles(paths []string) ([]PackDocument, error) + func ParseMarkdown(path, content string) (PackDocument, error) + type PackMetadata struct + Category string + Count int + Format string + GeneratedAt time.Time + GeneratedRaw string + ModeSelection string + Seed string + SourceFileName string + Version string + type Puzzle struct + Body string + Category string + DifficultyConfidence DifficultyConfidence + DifficultyScore float64 + DifficultySource string + Index int + ModeSelection string + Name string + PrintPayload any + SaveData []byte + SourceFileName string + SourcePath string + func OrderPuzzlesForPrint(puzzles []Puzzle, seed string) []Puzzle + type RGB struct + B uint8 + G uint8 + R uint8 + type Rect struct + H float64 + W float64 + X float64 + Y float64 + func PuzzleBoardRect(pageW, pageH float64, pageNo, ruleLines int) Rect + func PuzzleBodyRect(pageW, pageH float64, pageNo int) Rect + type RenderConfig struct + AdvertText string + CoverColor *RGB + CoverSubtitle string + GeneratedAt time.Time + HeaderText string + ShuffleSeed string + Title string + VolumeNumber int + type RippleEffectCage struct + Cells []RippleEffectCell + Size int + type RippleEffectCell struct + X int + Y int + type RippleEffectData struct + Cages []RippleEffectCage + Givens [][]int + Height int + Width int + func ParseRippleEffectPrintData(saveData []byte) (*RippleEffectData, error) + type ShikakuData struct + Clues [][]int + Height int + Width int + func ParseShikakuPrintData(saveData []byte) (*ShikakuData, error) + type SudokuData struct + Givens [9][9]int + func ParseSudokuPrintData(saveData []byte) (*SudokuData, error) + type TakuzuData struct + Givens [][]string + GroupEveryTwo bool + Size int + func ParseTakuzuPrintData(saveData []byte) (*TakuzuData, error) + type WordSearchData struct + Grid [][]string + Height int + Width int + Words []string + func ParseWordSearchPrintData(saveData []byte) (*WordSearchData, error)