Skip to content

Releases: trevorld/gridpattern

gridpattern v1.4.2

Choose a tag to compare

@trevorld trevorld released this 23 Jun 15:30

Breaking Changes

  • The "indented" (formerly "triangle") wave type now uses a wider stroke
    in order to better match the apparent stroke widths of the new wave types.
    Users who relied on the previous visual appearance should reduce density
    to compensate.

New Features

  • New "hatch" pattern with corresponding grid.pattern_hatch() and names_hatch() (#97).

  • New "line" pattern with corresponding grid.pattern_line().
    Unlike the "stripe" pattern which fills bands with solid colour,
    "line" draws stroked lines using the device's native line rendering,
    enabling all of R's built-in linetype values
    (including "dotdash", "twodash", and custom line types specified as hex strings per ?par).

  • The preexisting "wave" pattern gains ten new type values, a reverse parameter, a stagger parameter, and names_wave (#100, #101).

  • New mix_col() that mixes colors via Munsell color space using aqp::mixMunsell().
    Requires the suggested package {aqp}.

Bug fixes and minor improvements

  • Fixes a bug where geometry-based patterns (e.g. "stripe", "crosshatch", "wave")
    could silently disappear in small viewports when pattern_key_scale_factor
    was a relatively large value (#95).

  • The following "placeholder" pattern updates (#83):

    • The following placeholder pattern names are now serviced by placecats.com

      • "kitten" and "kittenbw"
    • The following placeholder pattern names are now serviced by placehold.co

      • "placeholder" and "placeholderbw"
    • The "placeholderbw" name now provides a pure black-and-white image (i.e. no grey).

  • Fixes a bug where the "wavy" (aliases "sine", "undy") and "indented" (alias "triangle") wave types had an effective wavelength of (n-1)/n times the requested wavelength, where n is the number of wavelength-spaced grid positions spanning the viewport.

gridpattern v1.3.1

Choose a tag to compare

@trevorld trevorld released this 16 Jan 22:35
  • New pattern "aRtsy" with corresponding grid.pattern_aRtsy() with
    patterns powered by the {aRtsy} package (#87).

gridpattern v1.2.2

Choose a tag to compare

@trevorld trevorld released this 03 Jun 06:26

Bug fixes and minor improvements

  • 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:

      • "cage" and "cagebw"
      • "murray" and "murraybw"
      • "seagal" and "seagalbw"
    • 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".

gridpattern v1.2.1

Choose a tag to compare

@trevorld trevorld released this 01 May 14:33

Breaking Changes

  • The default 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).

New Features

  • 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.

    • It is a fork of ggplot2::fill_alpha() by @teunbrand.
    • It does not depend on {ggplot2} or {scales}.
    • It does not throw an error with a length one list of a vector of multiple colours.
    • It is available as a "standalone" file.
      You may copy its source under the permissive MIT license into your own R package by either
      using 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.

Bug fixes and minor improvements

  • The 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.

gridpattern v1.1.1

Choose a tag to compare

@trevorld trevorld released this 25 Oct 18:59
  • "text" pattern example now skipped if ran within certain graphics devices like pdf()
    that can't handle the playing cards Unicode glyphs (#68).

gridpattern v1.1.0

Choose a tag to compare

@trevorld trevorld released this 03 Oct 15:50

New Features

  • reset_image_cache() resets the image cache used by grid.pattern_image()
    and grid.pattern_placeholder() to store images (#63).

Bug fixes and minor improvements

  • The function 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.
  • If {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.

gridpattern v1.0.2

Choose a tag to compare

@trevorld trevorld released this 07 Nov 21:51

Bug fixes and minor improvements

  • An internal function convert_polygon_sf_to_polygon_df() will now be a bit more
    quiet (throw WARNINGs less often).

gridpattern v1.0.1

Choose a tag to compare

@trevorld trevorld released this 16 Aug 18:44

Bug fixes and minor improvements

  • 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.
  • To match aesthetic changes in {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).

gridpattern v0.5.3

Choose a tag to compare

@trevorld trevorld released this 23 Mar 01:16

gridpattern v0.5.3

Bug Fixes and minor improvements

  • 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.

    • In particular 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).
    • Also if in the future any graphic devices add R 4.1 graphic feature support as well as
      R 4.2 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.

gridpattern v0.5.1

Choose a tag to compare

@trevorld trevorld released this 16 Feb 23:46

Breaking Changes

  • grid.pattern_rose() and grid.pattern_text() now "clip" their boundary using an
    "alpha mask" rather than a "clipping path".
    Now use the argument 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()).

New Features

  • alphaMaskGrob() is a function that (alpha) masks one grob by using a second grob to specify the (alpha) mask.

    • If use_R4.1_masks is TRUE we simply use the new R 4.1 (alpha) masks feature.
    • If use_R4.1_masks is FALSE we generate a grid::rasterGrob() approximation.
    • If use_R4.1_masks is NULL try to guess an appropriate choice.
    • The default for use_R4.1_masks can be set by options("ggpattern_use_R4.1_masks").

Bug fixes and minor improvements

  • 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).