视觉画布设计
canvas-design
基于设计原则创作静态视觉作品,用于海报与品牌图形。
generate-puzzle【文档与办公】Generate jigsaw puzzles via generate_puzzle() or geom_puzzle_*() with parameter validation against inst/config.yml. Supports rectangular, hexagonal, concentric, voronoi, and snic puzzle types with configurable grid, size, seed, offset, and layout parameters. Use when creating puzzle SVG files for a specific type and configuration, testing generation …
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
jigsawR unified API → generate puzzle.
"rectangular", "hexagonal", "concentric", "voronoi", "random", "snic")c(cols, rows) or c(rings))"grid" or "repel" rect)R_EXE="/mnt/c/Program Files/R/R-4.5.0/bin/Rscript.exe"
"$R_EXE" -e "cat(yaml::yaml.load_file('inst/config.yml')[['{TYPE}']]$grid$max)"
Or read inst/config.yml direct → valid ranges for type.
→ min/max for grid, size, tabsize known for type.
If err: config.yml missing or type key missing → in jigsawR root? pkg built once?
| Type | grid | size | Extra params |
|---|---|---|---|
| rectangular | c(cols, rows) | c(width, height) mm | offset, layout, tabsize |
| hexagonal | c(rings) | c(diameter) mm | do_warp, do_trunc, tabsize |
| concentric | c(rings) | c(diameter) mm | center_shape, tabsize |
| voronoi | c(cols, rows) | c(width, height) mm | n_interior, tabsize |
| random | c(cols, rows) | c(width, height) mm | n_interior, tabsize |
| snic | c(cols, rows) | c(width, height) mm | n_interior, compactness, tabsize |
→ Req mapped to generate_puzzle() args, values in config.yml range.
If err: unsure format → see table. Rect + voronoi → c(cols, rows); hex + concentric → c(rings).
Script file preferred over -e for complex cmds.
library(jigsawR)
result <- generate_puzzle(
type = "rectangular",
seed = 42,
grid = c(3, 4),
size = c(400, 300),
offset = 0,
layout = "grid"
)
cat("Pieces:", length(result$pieces), "\n")
cat("SVG length:", nchar(result$svg_content), "\n")
cat("Files:", paste(result$files, collapse = ", "), "\n")
Save to tmp script file.
→ R script saved w/ library(jigsawR) + call + diag output.
If err: syntax → verify string quoting + c() for num vectors. Use script files, avoid shell escape.
R_EXE="/mnt/c/Program Files/R/R-4.5.0/bin/Rscript.exe"
"$R_EXE" /path/to/script.R
→ Completes no errors. SVG → output/.
If err: check renv restored (renv::restore()). Pkg loaded (devtools::load_all()). NO --vanilla (renv needs .Rprofile).
output/<?xml or <svg→ SVG exists, content valid, piece count matches.
If err: SVG missing → check output/ exists. Count wrong → verify grid for type. ggplot2 → wrap tryCatch().
Default → output/. result contains:
$svg_content — raw SVG string$pieces — piece data list$canvas_size — dims$files — paths→ result has $svg_content, $pieces, $canvas_size, $files. Files on disk.
If err: $files empty → in-memory only. Explicitly: writeLines(result$svg_content, "output/puzzle.svg").
--vanilla: breaks renv. Never.-e: script files → shell escape → Exit 5.snic pkg installed.add-puzzle-type — scaffold new type E2Evalidate-piles-notation — validate fusion strings pre-callrun-puzzle-tests — test suite after gen changeswrite-testthat-tests — tests for new scenarios