Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

new graphics engine features #174

Open
4 tasks
trevorld opened this issue Jun 20, 2024 · 4 comments
Open
4 tasks

new graphics engine features #174

trevorld opened this issue Jun 20, 2024 · 4 comments
Labels
feature a feature request or enhancement

Comments

@trevorld
Copy link
Contributor

trevorld commented Jun 20, 2024

Introduced in R 4.2

  • affine transformations
  • compositing operators
  • luminance masks
  • stroking and filling paths

Introduced in R 4.3

❌ glyphs (maintainer says not in scope)

In a {vdiffr} issue comment @teunbrand writes:

In addition to pattern support, it would be nice to have support for other newer graphical features as well (clipping paths, masks, compositing/blending, affine transformations, glyphs and fill/stroke paths).

Presumably it would be easier to test these features with {vdiffr} if they were supported by {svglite}

@thomasp85
Copy link
Member

glyphs will sadly never work in svglite, since there is no way to pass on the information provided by the graphics engine to svg

@thomasp85
Copy link
Member

vdiffr is indeed based on svglite but is embedded as its own graphic device. This is done so that changes in svglite does not break visual tests in vdiffr because of slight changes to the produced svg. For the same reason we are very conservative with changing anything in the differ graphics device

@thomasp85 thomasp85 added the feature a feature request or enhancement label Oct 23, 2024
@trevorld
Copy link
Contributor Author

vdiffr is indeed based on svglite but is embedded as its own graphic device...

Note you can tell {vdiffr} to directly use svglite::svglite() instead of its own (more conservative but more stable) version. Some developers (including myself) use svglite::svglite() directly in {vdiffr} for tests of features introduced in R 4.1 (e.g. patterns, alpha masks, etc.) which have been supported in svglite::svglite() for a while but aren't yet supported in {vdiffr}'s more conservative version.

@teunbrand
Copy link

I had a need for sheared rasters and svglite crashed the R session (see details). That is just to say, I'd like to add my voice to this request.

Uncomment to have the reprex crash:

library(grid)

rect <- rectGrob(width = 0.5, height = 0.5)

# svglite::svglite()
grid.newpage()
grid.define(rect, name = "my_rect")
grid.use("my_rect", transform = function(...) {
  viewportTransform(..., shear = groupShear(0, 0.5))
})

# dev.off()

Created on 2024-12-15 with reprex v2.1.1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature a feature request or enhancement
Projects
None yet
Development

No branches or pull requests

3 participants