Skip to contents

This gallery tracks the ongoing port of grid examples into grrr scene graphs, shown as direct side-by-side comparisons.

# Rebuild all SVGs and status CSV.
source(file.path(pkg_root, "examples", "examples_grid_grrr.R"))

Coverage Snapshot

tab <- as.data.frame(table(status$state), stringsAsFactors = FALSE)
names(tab) <- c("state", "count")
tab$pct <- sprintf("%.1f%%", 100 * tab$count / sum(tab$count))
knitr::kable(tab, align = c("l", "r", "r"))
state count pct
partial 3 17.6%
ported 14 82.4%

Click any pane to open it in a lightbox.

status$grrr_path <- file.path(svg_dir, paste0(status$example, ".svg"))
status$svglite_path <- file.path(svglite_dir, paste0(status$example, ".svg"))
status <- status[file.exists(status$grrr_path) & file.exists(status$svglite_path), , drop = FALSE]
status <- status[order(status$example), , drop = FALSE]

cat("<section style='display:grid;grid-template-columns:1fr;gap:12px;align-items:start;'>\n")
for (i in seq_len(nrow(status))) {
  render_card(status[i, , drop = FALSE])
}
01_shapesported
grid + svglite
grrr

Circle via point primitive with large size

02_linesported
grid + svglite
grrr

Dashed support and segment colours should match

03_textported
grid + svglite
grrr

Justification + rotation covered

04_polygonsported
grid + svglite
grrr

Alpha per polygon not yet wired per row

05_polylinesported
grid + svglite
grrr

Grouped polylines mapped to path

06_viewportsported
grid + svglite
grrr

Nested panel composition via grab_bag + vp

07_layoutported
grid + svglite
grrr

vp_grid parity check

08_linetypesported
grid + svglite
grrr

Per-row linetype and linewidth now applied

09_fontsported
grid + svglite
grrr

Size + fontface supported

10_alphaported
grid + svglite
grrr

Alpha via group aesthetics

11_arrowspartial
grid + svglite
grrr

Arrows downgraded to plain segments

12_rasterported
grid + svglite
grrr

Raster primitive with colorful HCL matrix captured via ragg::agg_capture()

13_clippingported
grid + svglite
grrr

Clip behavior parity check

14_polyclippartial
grid + svglite
grrr

No polygon boolean ops yet; overlap visualization only

15_gtreeported
grid + svglite
grrr

Traversal now handles rect/circle/text/lines/polyline/polygon and basic nested viewport

16_pointsizesported
grid + svglite
grrr

Useful regression check for point scaling

17_pointshapespartial
grid + svglite
grrr

Only a subset of base-R pch values map cleanly

cat("</section>\n")

Remaining Partial Ports

partials <- status[status$state != "ported", c("example", "state", "note")]
if (nrow(partials) == 0) {
  cat("All examples are currently marked as ported.\n")
} else {
  knitr::kable(partials, align = c("l", "l", "l"))
}
example state note
11 11_arrows partial Arrows downgraded to plain segments
14 14_polyclip partial No polygon boolean ops yet; overlap visualization only
17 17_pointshapes partial Only a subset of base-R pch values map cleanly