-
Notifications
You must be signed in to change notification settings - Fork 0
/
set_knitr_opts.R
129 lines (119 loc) · 4.56 KB
/
set_knitr_opts.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
if (!file.exists("../images/knitr"))
dir.create("../images/knitr")
if (!dir.exists("../share/rules"))
dir.create("../share/rules")
if (!dir.exists("../share/pnp"))
dir.create("../share/pnp")
xmp <- xmpdf::xmp(attribution_url = "https://trevorldavis.com/piecepackr",
creator = "Trevor L. Davis",
spdx_id = "CC-BY-SA-4.0")
fig_process <- function(...) {
function(path, options) {
path <- xmp$fig_process(...)(path, options)
gsub("^content", "{static}", path)
}
}
set_opts_chunk <- function(prefix="prefix") {
knitr::opts_chunk$set(dev="png", dev.args = list(type = "cairo"),
fig.width=6.05, fig.height=6.05,
fig.path=paste0("content/images/knitr/", prefix, "-"),
fig.process=fig_process(),
fig.align="center",
out.width="60%",
warning=FALSE)
}
library("ppgames", quietly = TRUE) # avoid conflicts messages with below `save_ruleset()`, etc.
create_pnp <- function(Rdata_file) {
if (!file.exists("../share/pnp")) dir.create("../share/pnp")
ee <- new.env()
load(Rdata_file, envir=ee)
nn <- sort(names(ee))
for (name in nn) {
if (grepl("_cutlines$", name)) {
cfg <- ee[[name]]
piecepackr::save_print_and_play(cfg, sprintf("../share/pnp/%s_letter.pdf", name), "letter")
piecepackr::save_print_and_play(cfg, sprintf("../share/pnp/%s_A4.pdf", name), "A4")
}
if (grepl("_bleed$", name)) {
cfg <- ee[[name]]
piecepackr::save_print_and_play(cfg, sprintf("../share/pnp/%s_letter.pdf", name), "letter", bleed = TRUE)
piecepackr::save_print_and_play(cfg, sprintf("../share/pnp/%s_A4.pdf", name), "A4", bleed = TRUE)
}
}
invisible(NULL)
}
save_rulebook <- function(book, gk=game_kit(), output=NULL) {
tr <- tempfile(fileext=".R")
on.exit(unlink(tr))
trdata <- tempfile(fileext=".RData")
on.exit(unlink(trdata))
save(book, gk, output, file=trdata)
code <- c("library('grid')",
"library('piecepackr')",
"library('ppgames')",
sprintf("load('%s')", trdata),
"save_rulebook(book, gk=gk, output=output)")
writeLines(code, tr)
system2("Rscript", tr)
}
save_ruleset <- function(game, gk=game_kit(), output=NULL, size="letter") {
tr <- tempfile(fileext=".R")
on.exit(unlink(tr))
trdata <- tempfile(fileext=".RData")
on.exit(unlink(trdata))
save(game, gk, output, size, file=trdata)
code <- c("library('grid')",
"library('piecepackr')",
"library('ppgames')",
sprintf("load('%s')", trdata),
"save_ruleset(game, gk, output, size=size, quietly=TRUE)")
writeLines(code, tr)
system2("Rscript", tr)
}
save_pamphlet <- function(game, gk=game_kit(), output=NULL, size="letter") {
tr <- tempfile(fileext=".R")
on.exit(unlink(tr))
trdata <- tempfile(fileext=".RData")
on.exit(unlink(trdata))
save(game, gk, output, size, file=trdata)
code <- c("library('grid')",
"library('piecepackr')",
"library('ppgames')",
sprintf("load('%s')", trdata),
"save_pamphlet(game, gk, output, size=size, quietly=TRUE)")
writeLines(code, tr)
system2("Rscript", tr)
}
svg2png <- function(svg, png, w=768, h=768) {
# system2("inkscape", c("-z", "-e", png, "-w", w, "-h", h, svg)) # nolint
rsvg::rsvg_png(svg, png, w, h)
}
# resize_png <- function(png.in, png.out, w=768, h=768) {
# system2("convert", c(png.in, "-resize", paste0(w, "x", h), png.out)) # nolint
# }
resize_png <- function(png.in, png.out, w=768, h=768) {
system2("imgp", c("--res", paste0(w, "x", h), png.in)) # nolint
png_IMGP.in <- paste0(substr(png.in, 1, nchar(png.in) -4L), "_IMGP.png")
file.rename(png_IMGP.in, png.out)
xmpdf::set_xmp(xmpdf::get_xmp(png.in)[[1]], png.out)
}
rst_link <- function(url, text=basename(url)) {
sprintf("`%s <%s>`__", text, url)
}
rst_list_table <- function(df, title=NULL, widths=NULL) {
df <- as.data.frame(df)
nc <- ncol(df)
cat(".. list-table::", title, "\n")
cat("\t:header-rows:", 1, "\n")
if(!is.null(widths))
cat("\t:widths:", widths, "\n")
cat("\n")
col_names <- names(df)
cat("\t* -", col_names[1], "\n")
for (ic in 2:nc) { cat("\t -", col_names[ic], "\n") }
for(ir in 1:nrow(df)) {
cat("\t* -", df[ir, 1], "\n")
for(ic in 2:nc) { cat("\t -", df[ir, ic], "\n") }
}
cat("\n")
}