Nothing
## Shared "paper" utilities
A5W <- 5 # 5.83"
A5H <- 7.5 # 8.27"
a5_vp <- function() viewport(width = unit(A5W, "in"), height = unit(A5H, "in"))
draw_a5_page <- function(grob, vp) {
pushViewport(vp)
grid.draw(grob)
upViewport()
}
blank_grob <- textGrob("Intentionally left blank")
is_odd <- function(x) as.logical(x %% 2)
gappend <- function(ll, g) {
ll[[length(ll) + 1]] <- g
ll
}
gp_title <- gpar(fontsize = 15, fontfamily = "sans", fontface = "bold")
gp_header <- gpar(fontsize = 12, fontfamily = "sans", fontface = "bold")
gp_text <- gpar(fontsize = 9, fontfamily = "sans")
htg <- function(label, x, y, just = "center", ...) {
textGrob(label, x = inch(x), y = inch(y), just = just, gp = gp_header, ...)
}
tg <- function(label, x, y, just = "center", ...) {
textGrob(label, x = inch(x), y = inch(y), just = just, gp = gp_text, ...)
}
a5_title_grob <- function(cfg, pieces, quietly, extra_credit = TRUE, bleed = FALSE) {
# Title
y_title <- unit(1, "npc") - unit(0.2, "in")
if (is.null(cfg$title)) {
if (!quietly) {
inform("`cfg$title` is `NULL`, omitting title", class = "piecepackr_missing_metadata")
}
grob_title <- nullGrob()
} else {
grob_title <- textGrob(
cfg$title,
y = y_title,
just = "center",
gp = gp_title,
name = "title"
)
}
# Description
y_description <- y_title - grobHeight(grob_title) - unit(0.2, "in")
if (is.null(cfg$description)) {
if (!quietly) {
inform(
"`cfg$description` is `NULL`, omitting description",
class = "piecepackr_missing_metadata"
)
}
grob_description <- nullGrob()
} else {
dtext <- paste(strwrap(cfg$description, 72), collapse = "\n")
grob_description <- textGrob(
dtext,
x = 0.1,
y = y_description,
just = c(0, 1),
gp = gp_text,
name = "description"
)
}
# License
y_license <- y_description - grobHeight(grob_description) - unit(0.2, "in")
if (is.null(cfg$spdx_id)) {
if (!quietly) {
inform(
"`cfg$spdx_id` is `NULL`, omitting license",
class = "piecepackr_missing_metadata"
)
}
grob_license <- grob_lh <- grob_l <- nullGrob()
} else {
stopifnot(cfg$spdx_id %in% piecepackr::spdx_license_list$id)
url <- piecepackr::spdx_license_list[cfg$spdx_id, "url_alt"]
if (is.na(url)) {
url <- piecepackr::spdx_license_list[cfg$spdx_id, "url"]
}
full_name <- piecepackr::spdx_license_list[cfg$spdx_id, "name"]
license <- paste(c(paste("\u25cf", full_name), paste("\t", url)), collapse = "\n")
grob_lh <- textGrob("License", x = 0.1, y = y_license, just = "left", gp = gp_header)
badge <- piecepackr::spdx_license_list[cfg$spdx_id, "badge"]
if (is.na(badge)) {
grob_cc <- nullGrob()
} else {
cc_file <- system.file(paste0("extdata/badges/", badge), package = "piecepackr")
current_dev <- grDevices::dev.cur() # Workaround for {grImport2} v0.2-0 bug
cc_picture <- grImport2::readPicture(cc_file)
if (current_dev > 1) {
grDevices::dev.set(current_dev)
}
grob_cc <- grImport2::symbolsGrob(cc_picture, x = 0.50, y = 0.05, size = inch(0.9))
}
grob_l <- textGrob(
license,
x = 0.1,
y = y_license - unit(0.2, "in"),
just = c(0, 1),
gp = gp_text
)
grob_license <- grobTree(grob_lh, grob_l, grob_cc, name = "license")
}
# Copyright
y_copyright <- y_license - grobHeight(grob_lh) - grobHeight(grob_l) - unit(0.3, "in")
if (is.null(cfg$copyright) && !quietly) {
if (!quietly) {
inform(
"`cfg$copyright` is `NULL`, omitting copyright",
class = "piecepackr_missing_metadata"
)
}
}
if (is.null(cfg$copyright) || cfg$copyright == "") {
grob_copyright <- grob_ch <- grob_c <- nullGrob()
} else {
copyright <- paste(cfg$copyright, collapse = "\n")
grob_ch <- textGrob("Copyright", x = 0.1, y = y_copyright, just = "left", gp = gp_header)
grob_c <- textGrob(
copyright,
x = 0.1,
y = y_copyright - unit(0.2, "in"),
just = c(0, 1),
gp = gp_text
)
grob_copyright <- grobTree(grob_ch, grob_c, name = "copyright")
}
# Credits
y_credits <- y_copyright - grobHeight(grob_ch) - grobHeight(grob_c) - unit(0.3, "in")
if (is.null(cfg$credit) && !quietly) {
inform(
"`cfg$credit` is `NULL`, omitting custom credits",
class = "piecepackr_missing_metadata"
)
}
credits <- c(
"\u25cf This print-and-play layout was generated by piecepackr.",
"\thttps://github.com/piecepackr/piecepackr"
)
if (extra_credit) {
if ("piecepack" %in% pieces) {
credits <- c(
credits,
'\u25cf The piecepack was invented by James "Kyle" Droscha. Public Domain.',
"\thttps://ludism.org/ppwiki/AnatomyOfAPiecepack"
)
}
if (!bleed && "piecepack" %in% pieces) {
credits <- c(
credits,
"\u25cf Pawn saucers were invented by Karol M. Boyle. Public Domain.",
"\thttps://web.archive.org/web/2018/http://www.piecepack.org/Accessories.html"
)
}
if ("pyramids" %in% pieces) {
credits <- c(
credits,
"\u25cf Piecepack pyramids were invented by Tim Schutz. Public Domain.",
"\thttps://www.ludism.org/ppwiki/PiecepackPyramids"
)
}
if ("matchsticks" %in% pieces) {
credits <- c(
credits,
"\u25cf Piecepack matchsticks were invented by Dan Burkey. Public Domain.",
"\thttps://www.ludism.org/ppwiki/PiecepackMatchsticks"
)
}
} else {
credits <- c(
credits,
'\u25cf The piecepack was invented by James "Kyle" Droscha. Public Domain.',
"\thttps://ludism.org/ppwiki/AnatomyOfAPiecepack"
)
}
credits <- paste(c(credits, cfg$credit), collapse = "\n")
grob_credits <- gTree(
name = "credits",
children = gList(
textGrob("Credits", x = 0.1, y = y_credits, just = "left", gp = gp_header),
textGrob(
credits,
x = 0.1,
y = y_credits - unit(0.2, "in"),
just = c(0, 1),
gp = gp_text
)
)
)
grobTree(
grob_title,
grob_description,
grob_license,
grob_copyright,
grob_credits,
name = "title_page",
vp = a5_vp()
)
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.