grid.pattern_aRtsy() with patterns powered by the
{aRtsy} package (#87).grid.pattern_weave() adds the new units
parameter that most other “geometry” pattern functions received in
gridpattern v1.2.1.
The “polygon_tiling” pattern should now respect the
units parameter if set to a value different from the “snpc”
default (#82).
For the “polygon_tiling” pattern type = "18.18.3*"
the size of the eighteen-sided polygons have been increased a teeny bit
and this polygon tiling should look a bit cleaner.
The following “placeholder” pattern updates (#83):
The following placeholder pattern names are now serviced by lucidinternets.com:
The following placeholder pattern names have been removed since their associated web service no longer works:
The “dummybw” name now provides a pure black-and-white image (i.e. no grey).
Fixes a regression for the “placeholderbw” name where it redirected to the “seagal” name instead of “placeholder”.
type for the “placeholder” pattern is now
“bear” instead of “kitten”. Explicitly set type = "kitten"
to continue to use the “kitten” placeholder but note that although the
“kitten” placeholder website isn’t completely down it has been buggy
recently (#73).patternFill() wraps patternGrob() to
return a grid::pattern() fill object (#70).
The “geometry” patterns (e.g. “circle”, “stripe”, etc.) now allow
the fill to be pattern fills (#67).
The “geometry” patterns (e.g. “circle”, “stripe”, etc.) now allow
the new units parameter to set which
grid::unit() to use for the the spacing,
xoffset, and yoffset parameters (and for the
“wave” pattern also the amplitude and
frequency parameters) (#58). By default it will continue to
be “snpc” units but can now be changed to “cm”, “in”, etc.
update_alpha() updates fill colour and/or pattern
transparency.
ggplot2::fill_alpha() by @teunbrand.{ggplot2} or
{scales}.usethis::use_standalone("trevorld/gridpattern", "standalone-update_alpha.R")
or simply copying standalone-update_alpha.R into your R
directory and adding grDevices, grid, and
rlang to the Imports of your
DESCRIPTION file.For completeness there is now a new “fill” pattern with
corresponding grid.pattern_fill() which draws a simple fill
pattern.
For completeness there is now a grid.pattern_none()
corresponding to the previously supported “none” pattern which draws
nothing.
wave pattern no longer quietly and incorrectly
ignores the frequency parameter. The effective wavelength
of the wave pattern is now 1 / frequency instead of
spacing. However frequency will continue to
default to 1 / spacing.clippingPathGrob() can now more efficiently compute a
rasterGrob() approximation via
ragg::agg_capture() and for png_device
functions that support the clipping path feature such
aspng(type = "cairo")(#74).alphaMaskGrob() can now more efficiently compute a
rasterGrob() approximation for png_device
functions that support the alpha mask feature such
aspng(type = "cairo")(#75).alphaMaskGrob() and clippingPathGrob() now
switch back to the previously open graphics device if they open and
close any new graphics devices.pdf() that can’t handle the playing cards
Unicode glyphs (#68).reset_image_cache() resets the image cache used by
grid.pattern_image() and
grid.pattern_placeholder() to store images (#63).guess_has_R4.1_features() is now available
as a “standalone” file. You may copy its source under the permissive MIT No Attribution
(MIT-0) license into your own R package by either using
usethis::use_standalone("trevorld/gridpattern", "standalone-guess_has_R4.1_features.R")
or simply copying standalone-guess_has_R4.1_features.R into
your R directory and adding grDevices and
utils to the Imports of your
DESCRIPTION file.{vdiffr} has been updated to at least v1.0.6
(released 2023-08-25) then guess_has_R4.1_features() should
now always correctly guess R4.1 feature support for the
svglite::svglite() and vdiffr:::svglite()
graphics devices.convert_polygon_sf_to_polygon_df()
will now be a bit more quiet (throw WARNINGs less often).guess_has_R4.1_features() can now also take advantage
if dev.capabilities() explicitly indicates
that a feature is not supported in active graphics
device.{ggplot2} one may now use
the parameter linewidth to set polygon/path line widths in
grid.pattern_circle(),
grid.pattern_crosshatch(), grid.pattern_pch(),
grid.pattern_polygon_tiling(),
grid.pattern_regular_polygon(),
grid.pattern_stripe(), grid.pattern_rose(),
grid.pattern_wave(), and grid.pattern_weave().
For backwards compatibility one may continue to use size as
well. Continue to use size (or gp) to set the
fontsize in grid.pattern_text(). Both
pattern_linewidth and pattern_size will be
available for use in custom patterns (#57).Fixes bug with grid.pattern_image() with
type = "tile" (#47). Additionally
grid.pattern_image() now supports gravity
argument when type = "tile".
If the active graphics device has also implemented the new R 4.2
dev.capabilities() support then
guess_has_R4.1_features() can now better guess R 4.1
graphic feature support when called within R 4.2.
guess_has_R4.1_features() can now better
guess R 4.1 graphic feature support in the {grDevices}
bitmap devices (i.e. bmp(), jpeg(),
png(), tiff()) when called within R 4.2 on
Windows. Previously it was not possible to easily distinguish on Windows
if the device was called with type = "windows" or
type = "cairo" and hence we had to conservatively guess no
such support even if type = "cairo" had been specified (and
within R 4.1 we must still conservatively do so).dev.capabilities() support then we
should now be able to correctly guess such support within R 4.2 without
needing to manually update guess_has_R4.1_features().guess_has_R4.1_features() now supports an argument
features which allows one to limit the guessing of R4.1
feature support to a subset of
c("clippingPaths", "gradients", "masks", "patterns").
Although all known graphic devices either implements all or none of
these features this need not hold true in the future.
grid.pattern_rose() and
grid.pattern_text() now “clip” their boundary using an
“alpha mask” rather than a “clipping path”.use_R4.1_masks, the global option
ggpattern_use_R4.1_masks, or the global option
ggpattern_use_R4.1_features to toggle on/off the R 4.1
alpha mask feature instead of using the use_R4.1_clipping
argument or the global option ggpattern_use_R4.1_clipping
as before (the latter continue to toggle on/off the R 4.1 clipping path
feature in clippingPathGrob()).alphaMaskGrob() is a function that (alpha) masks one
grob by using a second grob to specify the (alpha) mask.
use_R4.1_masks is TRUE we simply use
the new R 4.1 (alpha) masks feature.use_R4.1_masks is FALSE we generate a
grid::rasterGrob() approximation.use_R4.1_masks is NULL try to guess an
appropriate choice.use_R4.1_masks can be set by
options("ggpattern_use_R4.1_masks").guess_has_R4.1_features() now returns TRUE
for the ragg::agg_jpeg(), ragg::agg_ppm(), and
ragg::agg_tiff() devices if
packageVersion("ragg") >= '1.2.0'. It also returns
TRUE for svglite::svglite() if
packageVersion("svglite") >= '2.1.0'.clippingPathGrob() will now consistently - as
previously documented - use ragg::agg_png() as the default
png_device graphics device if it is available and
use_R4.1_clipping is FALSE.grid.pattern_image() should no longer throw an
inscrutable Error in magick_image_readpath… error on
certain platforms such as Windows (#47).guess_has_R4.1_features() is now an exported function.
It guesses whether the “active” graphic devices supports the new R
4.1 graphics features and returns TRUE or
FALSE.grid.pattern_polygon_tiling() now supports the
“elongated_triangular” type (#48). “geometry” patterns now
support a “elongated_triangle” grid value.guess_has_R4.1_features() now returns TRUE
for the ragg::agg_png() and
ragg::agg_supertransparent() devices if
packageVersion("ragg") >= '1.2.0'. It now also returns
TRUE for the grDevices::bmp(type = "cairo"),
grDevices::cairo_ps(),
grDevices::jpeg(type = "cairo"), and
grDevices::tiff(type = "cairo") devices if
getRversion() >= '4.1.0'.The package {magick} has been downgraded from
“Imports” to “Suggests” (#44). You’ll need to manually install
{magick} with install.packages("magick") in
order to use the following “array” patterns:
use_R4.1_gradients is
FALSE)The following package option ggpattern_res can now
be set by options(). It controls default “raster” image
pattern resolution (pixels per inch). Defaults to 72 (pixels per
inch).
grid.pattern_polygon_tiling() now supports the
following additional polygon tiling type’s (#42):
"rhombille" implements a rhombille tiling of rhombi
(#37)"tetrakis_square" implements a tetrakis square tiling
of isosceles right triangles (#38)"2*.2**.2*.2**" implements a polygon tiling made of
rhombi."2**.3**.12*" implements a polygon tiling made of
rhombi, triangles, and twelve-pointed stars."3.3.3.3**" implements a polygon tiling made of
triangles."3.3*.3.3**" implements a regular (star) polygon tiling
made of triangles and three-pointed stars."3.3.3.12*.3.3.12*" implements a regular (star) polygon
tiling made of triangles and twelve-pointed starts."3.3.8*.3.4.3.8*" implements a regular (star) polygon
tiling of triangles, squares, and eight-pointed stars."3.3.8*.4**.8*" implements a regular (star) polygon
tiling made of triangles, four-pointed stars, and eight-pointed
stars."3.4.6.3.12*" implements a regular (star) polygon
tiling made of triangles, squares, hexagons, and twelve-pointed
stars."3.4.8.3.8*" implements a regular (star) polygon tiling
of triangles, squares, octagons, and eight-pointed stars."3.6*.6**" implements a regular (star) polygon tiling
made of triangles and six-pointed stars."4.2*.4.2**" implements a polygon tiling made of
squares and rhombi."4.4*.4**" implements a regular (star) polygon tiling
made of squares and four-pointed stars."4.6.4*.6" implements a regular (star) polygon tiling
made of squares, hexagons, and four-pointed stars."4.6*.4.6*.4.6*" implements a regular (star) polygon of
squares and six-pointed stars."4.8*.4**.8*" implements a polygon tiling of squares
and eight-pointed stars."6.6*.6.6*" implements a regular (star) polygon of
hexagons and six-pointed stars."8.4*.8.4*" implements a regular (star) polygon of
octagons and four-pointed stars."9.3.9.3*" implements a regular (star) polygon of
triangles, nonagons, and three-pointed stars."12.3*.12.3*" implements a regular (star) polygon
tiling made of dodecagons and three-pointed stars."12.12.4*" implements a regular (star) polygon tiling
made of dodecagons and four-pointed stars."18.18.3*" implements a regular (star) polygon tiling
made of eighteen-sided polygons and three-pointed stars.grid.pattern_regular_polygon() now supports a
"tetrakis_left" shape and
"tetrakis_right" shape which both draw an
isosceles right triangle (one oriented left and one oriented right) as
well as a "rhombille_rhombus" shape which draws a rhombus.
These are non-regular polygons intended to help produce tetrakis square
and rhombille polygon tilings.
star_angle() and star_scale() now handle
the n_vertices == 2 case (a “two-pointed star” polygon is a
rhombus).grid.pattern_gradient() when
use_R4.1_gradients=TRUE to better match behavior when
use_R4.1_gradients=FALSE.fill
(and fill2) colour strings for
gridpattern_plasma() and
gridpattern_gradient() (when
use_R4.1_gradients=FALSE).pattern_square() for the “horizontal” and “vertical”
types the value 1L is now guaranteed to be in the center of
the pattern (#46).grid::nullGrob()).legend = TRUE.Supports the following new patterns:
grid.pattern_rose() (#43)grid.pattern_text() (#40)grid.pattern_wave() which supports “sine” and
“triangle” type waves (#16)names_pattern is a new character vector of supported
(builtin) patterns.
clippingPathGrob() is a function that clips one grob
according to clipping path set by a second grob.
use_R4.1_clipping is TRUE we simply use
the new R 4.1 clipping path featureuse_R4.1_clipping is FALSE we generate
a grid::rasterGrob() approximationuse_R4.1_clipping is NULL try to guess
an appropriate choice.use_R4.1_clipping can be set by
options("ggpattern_use_R4.1_clipping")grid.pattern_gradient() now supports the argument
use_R4.1_gradients
TRUE use the new R 4.1 gradient featureFALSE use a rasterGrob approximation
(old behaviour)NULL try to guess an appropriate choice.use_R4.1_gradients can be set by
options("ggpattern_use_R4.1_gradients")The following package options can now be set by
options():
ggpattern_use_R4.1_clipping If TRUE use
the grid clipping path feature introduced in R v4.1.0. If
FALSE do a rasterGrob approximation of the
clipped pattern. Currently used by clippingPathGrob(),
grid.pattern_rose(), grid.pattern_text(), and
available for custom patterns.ggpattern_use_R4.1_features Set the default for all the
other ggpattern_use_R4.1_* options arguments.ggpattern_use_R4.1_gradients If TRUE use
the grid gradient feature introduced in R v4.1.0. If FALSE
do a rasterGrob approximation of the gradient pattern.
Currently used by grid.pattern_gradient() and available for
custom patterns.ggpattern_use_R4.1_masks If TRUE use the
grid mask feature introduced in R v4.1.0. Currently unused by this
package but available for custom patterns.ggpattern_use_R4.1_patterns If TRUE use
the grid pattern feature introduced in R v4.1.0. Currently unused by
this package but available for custom patterns.grid.pattern() now throws an error if there is a
non-unique pattern name (set by
options("ggpattern_geometry_funcs") and/or
options("ggpattern_array_funcs")).grid.pattern() draws a specified “pattern” to the
active graphics device while patternGrob() returns a
“pattern” (grid) grob.
Supports the following original patterns:
grid.pattern_pch()grid.pattern_polygon_tiling()
(#13)grid.pattern_regular_polygon()
(#20)grid.pattern_weave() (#12)Supports the following patterns from ggpattern:
grid.pattern_ambient()grid.pattern_circle() (#5)grid.pattern_crosshatch()(#4)grid.pattern_gradient()(#8)grid.pattern_image()(#9)grid.pattern_magick() (#6)grid::null()grid.pattern_placeholder() (#10)grid.pattern_plasma() (#7)grid.pattern_stripe() (#3)Enhancements made to the {ggpattern} patterns provided
by this package:
Resolution of “array” patterns is now settable by new “pattern_res”. Defaults to 72 pixels per inch but sets a minimum 12 pixel image width and/or height.
Default for “pattern_alpha” is now NA_real_
(preserve existing alpha transparency) instead of 1 (set to
fully opaque).
grid.pattern_ambient() pattern supports all
arguments of the six {ambient} “noise” functions.
grid.pattern_circle() has several enhancements:
xoffset and
yoffset (#22)grid, type, and
subtype to customize the pattern arrangement.fill colors now produces a more
attractive pattern.density greater than 1 will now
sometimes give an attractive result (#17).{sf} to clip circles to boundary instead of
{gridGeometry}grid.pattern_crosshatch() allows using the argument
fill2 to set different fill color(s) for the “over”
crosshatch lines (#14).
xoffset, yoffset, and
spacing are now interpreted as “snpc” units and
grid.pattern_stripe() and
grid.pattern_crosshatch() now allow using the argument
grid to tweak placement of lines so that they now match the
placement of circles from grid.pattern_circle() and
polygons from grid.pattern_regular_polygon()
(#24).
The center point of the geometry “grid” now matches the center of the viewport.
mean_col() is a utility function that computes an
“average” color (#21)
star_scale() and star_angle() are
utility functions for converting between regular star polygon
parameterizations (#39).
pattern_hex() returns an integer matrix indicating
placement of multiple colors (or other graphical elements) on a hex
grid. Supports types listed in hex_names.
pattern_square() returns an integer matrix
indicating placement of multiple colors (or other graphical elements) on
a rectangular grid. Supports types listed in
square_names.
pattern_weave() returns a logical matrix indicating
where the warp lines should “up” for a specified weave pattern type and
subtype. Supports weaves listed in weave_names. In
particular supports “irregular matt” and “elongated twill” family of
weave patterns including “zig-zag” and “herringbone”
variations.