From b6f053ca681332edc9cc36f949193a0dc877aa90 Mon Sep 17 00:00:00 2001 From: Mark Heckmann Date: Wed, 11 Sep 2024 13:38:50 +0200 Subject: [PATCH] fix: plot_layout_properties(): type and ids fixed for LABEL=FALSE ph_location_type() check for type id range (#602) `ph_location_type()` now throws an informative error if ... - `id` for a `type` is our of range (#602) - type exists but is not present in current layout --- DESCRIPTION | 2 +- NEWS.md | 1 + R/pptx_informations.R | 30 +++++++++--------- man/plot_layout_properties.Rd | 6 ++-- .../pptx-info/plot-content-order-nolabel.png | Bin 0 -> 8746 bytes .../_snaps/pptx-info/plot-content-order.png | Bin 0 -> 8682 bytes .../testthat/docs_dir/test-content-order.pptx | Bin 0 -> 19384 bytes tests/testthat/test-pptx-info.R | 27 ++++++++++++++++ 8 files changed, 47 insertions(+), 19 deletions(-) create mode 100644 tests/testthat/_snaps/pptx-info/plot-content-order-nolabel.png create mode 100644 tests/testthat/_snaps/pptx-info/plot-content-order.png create mode 100644 tests/testthat/docs_dir/test-content-order.pptx diff --git a/DESCRIPTION b/DESCRIPTION index 243fdd06..02f6cdd5 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Type: Package Package: officer Title: Manipulation of Microsoft Word and PowerPoint Documents -Version: 0.6.7.010 +Version: 0.6.7.011 Authors@R: c( person("David", "Gohel", , "david.gohel@ardata.fr", role = c("aut", "cre")), person("Stefan", "Moog", , "moogs@gmx.de", role = "aut"), diff --git a/NEWS.md b/NEWS.md index b0bc4912..e71f19f7 100644 --- a/NEWS.md +++ b/NEWS.md @@ -17,6 +17,7 @@ now sorts the resulting data by placeholder position. This yields an intuitive o top to bottom and left to right. - `ph_location_type()` now throws an error if the `id` for a `type` is out of range (#602) and a more informative error message if the type is not present in layout (#601). +- `plot_layout_properties()` assignment order fixed for `labels= FALSE` (#604) ## Features diff --git a/R/pptx_informations.R b/R/pptx_informations.R index 8c96cb18..ed52c788 100644 --- a/R/pptx_informations.R +++ b/R/pptx_informations.R @@ -97,12 +97,12 @@ layout_properties <- function( x, layout = NULL, master = NULL ){ #' @importFrom graphics plot rect text box #' @examples #' x <- read_pptx() -#' plot_layout_properties( x = x, layout = "Title Slide", -#' master = "Office Theme" ) -#' plot_layout_properties( x = x, layout = "Two Content" ) +#' plot_layout_properties(x = x, layout = "Title Slide", master = "Office Theme") +#' plot_layout_properties(x = x, layout = "Two Content") +#' plot_layout_properties(x = x, layout = "Two Content", labels = FALSE) #' @family functions for reading presentation informations -plot_layout_properties <- function (x, layout = NULL, master = NULL, labels = TRUE, title = FALSE) -{ +#' +plot_layout_properties <- function(x, layout = NULL, master = NULL, labels = TRUE, title = FALSE) { old_par <- par(mar = c(2, 2, 1.5, 0)) on.exit(par(old_par)) @@ -110,29 +110,29 @@ plot_layout_properties <- function (x, layout = NULL, master = NULL, labels = TR if (length(unique(dat$name)) != 1) { stop("one single layout need to be choosen") } + dat <- dat[order(dat$type, as.integer(dat$id)), ] # set order for type idx. Removing the line would result in the default layout properties order, i.e., top->bottom left->right. + dat$type_idx <- stats::ave(dat$type, dat$type, FUN = seq_along) # NB: returns character index + s <- slide_size(x) h <- s$height w <- s$width - offx <- dat$offx - offy <- dat$offy - cx <- dat$cx - cy <- dat$cy + list2env(dat[, c("offx", "offy", "cx", "cy")], environment()) # make available inside functions + if (labels) { labels <- dat$ph_label } else { - labels <- dat$type[order(as.integer(dat$id))] - rle_ <- rle(labels) - labels <- sprintf("type: '%s' - id: %.0f", labels, unlist(lapply(rle_$lengths, seq_len))) + labels <- sprintf("type: '%s' - id: %s", dat$type, dat$type_idx) } + plot(x = c(0, w), y = -c(0, h), asp = 1, type = "n", axes = FALSE, xlab = NA, ylab = NA) if (title) { title(main = paste("Layout:", layout)) } rect(xleft = 0, xright = w, ybottom = 0, ytop = -h, border = "darkgrey") rect(xleft = offx, xright = offx + cx, ybottom = -offy, ytop = -(offy + cy)) - text(x = offx + cx/2, y = -(offy + cy/2), labels = labels, cex = 0.5, col = "red") - mtext("y [inch]", side = 2, line = 0, cex = 1.2, col="darkgrey") - mtext("x [inch]", side = 1, line = 0, cex = 1.2, col="darkgrey") + text(x = offx + cx / 2, y = -(offy + cy / 2), labels = labels, cex = 0.5, col = "red") + mtext("y [inch]", side = 2, line = 0, cex = 1.2, col = "darkgrey") + mtext("x [inch]", side = 1, line = 0, cex = 1.2, col = "darkgrey") } diff --git a/man/plot_layout_properties.Rd b/man/plot_layout_properties.Rd index 57a54fb3..780a60e3 100644 --- a/man/plot_layout_properties.Rd +++ b/man/plot_layout_properties.Rd @@ -31,9 +31,9 @@ visualise placeholders locations and identifier. } \examples{ x <- read_pptx() -plot_layout_properties( x = x, layout = "Title Slide", - master = "Office Theme" ) -plot_layout_properties( x = x, layout = "Two Content" ) +plot_layout_properties(x = x, layout = "Title Slide", master = "Office Theme") +plot_layout_properties(x = x, layout = "Two Content") +plot_layout_properties(x = x, layout = "Two Content", labels = FALSE) } \seealso{ Other functions for reading presentation informations: diff --git a/tests/testthat/_snaps/pptx-info/plot-content-order-nolabel.png b/tests/testthat/_snaps/pptx-info/plot-content-order-nolabel.png new file mode 100644 index 0000000000000000000000000000000000000000..421ddcfa9f37e8512a72ada6423f4e68f7e81f8e GIT binary patch literal 8746 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