From b2dfc664098314d829c9cbbec1eb220a7db9944e Mon Sep 17 00:00:00 2001 From: Mark Heckmann Date: Thu, 5 Sep 2024 13:32:00 +0200 Subject: [PATCH] fix: layout_properties() returns all phs for multiple masters (#600) `layout_properties()` now returns all placeholders in case of multiple master (#597). Also, the internal `xfrmize()` now sorts the resulting data by placeholder position. This yields an intuitive order, with placeholders sorted from top to bottom and left to right. close #597 --- .Rbuildignore | 1 + .gitignore | 1 + DESCRIPTION | 2 +- NEWS.md | 3 + R/pptx_informations.R | 9 ++- R/utils.R | 57 ++++++++++++------ .../plot-titleslide-layout-nolabel.png | Bin 0 -> 33714 bytes ...-layout.png => plot-titleslide-layout.png} | Bin .../plot-twocontent-layout-nolabel.png | Bin 34392 -> 0 bytes .../test-three-identical-masters.pptx | Bin 0 -> 30996 bytes tests/testthat/test-pptx-info.R | 19 +++++- 11 files changed, 64 insertions(+), 28 deletions(-) create mode 100644 tests/testthat/_snaps/pptx-info/plot-titleslide-layout-nolabel.png rename tests/testthat/_snaps/pptx-info/{plot-twocontent-layout.png => plot-titleslide-layout.png} (100%) delete mode 100644 tests/testthat/_snaps/pptx-info/plot-twocontent-layout-nolabel.png create mode 100644 tests/testthat/docs_dir/test-three-identical-masters.pptx diff --git a/.Rbuildignore b/.Rbuildignore index 6a4bd950..31b4bbf7 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -15,3 +15,4 @@ ^tests/testthat/_snaps$ ^inst/visual-testing$ ^LICENSE\.md$ +dev_local diff --git a/.gitignore b/.gitignore index c6db90ca..206399fc 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ .Ruserdata revdep todo.* +dev_local diff --git a/DESCRIPTION b/DESCRIPTION index 46c1dd02..0630d714 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.008 +Version: 0.6.7.009 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 bee2adf9..c91f05ff 100644 --- a/NEWS.md +++ b/NEWS.md @@ -12,6 +12,9 @@ Before, a box was drawn around the plot area. However, the plot area var with de - class `dir_collection`: Files are now added to a container in the order of their trailing numeric index (#596). For example, `slideLayout2.xml` will now preceed `slideLayout10.xml`. Before, alphabetical sorting was used, where `slideLayout10.xml` comes before `slideLayout2.xml`. +- `layout_properties()` now returns all placeholders in case of multiple master (#597). Also, the internal `xfrmize()` +now sorts the resulting data by placeholder position. This yields an intuitive order, with placeholders sorted from +top to bottom and left to right. ## Features diff --git a/R/pptx_informations.R b/R/pptx_informations.R index 2a386bf4..8c96cb18 100644 --- a/R/pptx_informations.R +++ b/R/pptx_informations.R @@ -117,20 +117,19 @@ plot_layout_properties <- function (x, layout = NULL, master = NULL, labels = TR offy <- dat$offy cx <- dat$cx cy <- dat$cy - if (labels) + if (labels) { labels <- dat$ph_label - else { + } 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: %.0f", labels, unlist(lapply(rle_$lengths, seq_len))) } 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)) + 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") diff --git a/R/utils.R b/R/utils.R index d723f95e..3e457ba3 100644 --- a/R/utils.R +++ b/R/utils.R @@ -51,12 +51,18 @@ read_xfrm <- function(nodeset, file, name){ name = name ) } -fortify_master_xfrm <- function(master_xfrm){ +fortify_master_xfrm <- function(master_xfrm) { master_xfrm <- as.data.frame(master_xfrm) has_type <- grepl("type=", master_xfrm$ph) master_xfrm <- master_xfrm[has_type, ] - master_xfrm <- master_xfrm[!duplicated(master_xfrm$type),] + if (nrow(master_xfrm) > 0) { # see #597 + list_xfrm <- split(master_xfrm, master_xfrm$file) + list_xfrm <- lapply(list_xfrm, function(x) { + x[!duplicated(x$type), , drop = FALSE] + }) + master_xfrm <- do.call("rbind", list_xfrm) + } tmp_names <- names(master_xfrm) @@ -72,12 +78,14 @@ fortify_master_xfrm <- function(master_xfrm){ master_xfrm } -xfrmize <- function( slide_xfrm, master_xfrm ){ - x <- as.data.frame( slide_xfrm ) +xfrmize <- function(slide_xfrm, master_xfrm) { + x <- as.data.frame(slide_xfrm) - master_ref <- unique( data.frame(file = master_xfrm$file, - master_name = master_xfrm$name, - stringsAsFactors = FALSE ) ) + master_ref <- unique(data.frame( + file = master_xfrm$file, + master_name = master_xfrm$name, + stringsAsFactors = FALSE + )) master_xfrm <- fortify_master_xfrm(master_xfrm) slide_key_id <- paste0(x$master_file, x$type) @@ -85,17 +93,20 @@ xfrmize <- function( slide_xfrm, master_xfrm ){ slide_xfrm_no_match <- x[!slide_key_id %in% master_key_id, ] slide_xfrm_no_match <- merge(slide_xfrm_no_match, - master_ref, by.x = "master_file", by.y = "file", - all.x = TRUE, all.y = FALSE) + master_ref, + by.x = "master_file", by.y = "file", + all.x = TRUE, all.y = FALSE + ) x <- merge(x, master_xfrm, - by.x = c("master_file", "type"), - by.y = c("file", "type"), - all = FALSE) - x$offx <- ifelse( !is.finite(x$offx), x$offx_ref, x$offx ) - x$offy <- ifelse( !is.finite(x$offy), x$offy_ref, x$offy ) - x$cx <- ifelse( !is.finite(x$cx), x$cx_ref, x$cx ) - x$cy <- ifelse( !is.finite(x$cy), x$cy_ref, x$cy ) + by.x = c("master_file", "type"), + by.y = c("file", "type"), + all = FALSE + ) + x$offx <- ifelse(!is.finite(x$offx), x$offx_ref, x$offx) + x$offy <- ifelse(!is.finite(x$offy), x$offy_ref, x$offy) + x$cx <- ifelse(!is.finite(x$cx), x$cx_ref, x$cx) + x$cy <- ifelse(!is.finite(x$cy), x$cy_ref, x$cy) x$offx_ref <- NULL x$offy_ref <- NULL x$cx_ref <- NULL @@ -104,11 +115,17 @@ xfrmize <- function( slide_xfrm, master_xfrm ){ x$fld_type_ref <- NULL x <- rbind(x, slide_xfrm_no_match, stringsAsFactors = FALSE) + i_master <- get_file_index(x$master_file) + i_layout <- get_file_index(x$file) + x <- x[order(i_master, i_layout, x$offy, x$offx), , drop = FALSE] # natural sorting: top -> bottom, left -> right x[ - !is.na( x$offx ) & - !is.na( x$offy ) & - !is.na( x$cx ) & - !is.na( x$cy ),] + !is.na(x$offx) & + !is.na(x$offy) & + !is.na(x$cx) & + !is.na(x$cy), + ] + rownames(x) <- NULL # no mixed up numbers + x } diff --git a/tests/testthat/_snaps/pptx-info/plot-titleslide-layout-nolabel.png b/tests/testthat/_snaps/pptx-info/plot-titleslide-layout-nolabel.png new file mode 100644 index 0000000000000000000000000000000000000000..cd255622d388b15a280ab61f66d69b42a2f52fbc GIT binary patch literal 33714 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 literal 0 HcmV?d00001 diff --git a/tests/testthat/_snaps/pptx-info/plot-twocontent-layout.png b/tests/testthat/_snaps/pptx-info/plot-titleslide-layout.png similarity index 100% rename from tests/testthat/_snaps/pptx-info/plot-twocontent-layout.png rename to tests/testthat/_snaps/pptx-info/plot-titleslide-layout.png diff --git a/tests/testthat/_snaps/pptx-info/plot-twocontent-layout-nolabel.png b/tests/testthat/_snaps/pptx-info/plot-twocontent-layout-nolabel.png deleted file mode 100644 index 1e1cde93551dbc05ef858c3b6763aebc7d2a3b88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34392 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 diff --git a/tests/testthat/docs_dir/test-three-identical-masters.pptx b/tests/testthat/docs_dir/test-three-identical-masters.pptx new file mode 100644 index 0000000000000000000000000000000000000000..52693a6a2f3b480d5edbcb354676c360d3e37051 GIT binary patch literal 30996 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 each ph 3 times + + l_df <- split(lap, lap$master_name) # phs sorted by y coords + is_y_sorted <- vapply(l_df, function(x) { + all(diff(x$offy) >= 0) + }, logical(1)) + expect_true(all(is_y_sorted)) +}) + + save_png <- function(code, width = 700, height = 700) { path <- tempfile(fileext = ".png") png(path, width = width, height = height, res = 150) @@ -84,8 +99,8 @@ test_that("plot layout properties", { labels = FALSE ) dev.off() - expect_snapshot_doc(name = "plot-twocontent-layout", x = png1, engine = "testthat") - expect_snapshot_doc(name = "plot-twocontent-layout-nolabel", x = png2, engine = "testthat") + expect_snapshot_doc(name = "plot-titleslide-layout", x = png1, engine = "testthat") + expect_snapshot_doc(name = "plot-titleslide-layout-nolabel", x = png2, engine = "testthat") })