registered_patterns() returns a data frame of all available patterns
i.e. those of {gridpattern}, the user, and loaded packages
(it never loads any packages and neither does has_registered_pattern()).
has_pattern() returns whether pattern names currently resolve to a pattern
i.e. whether grid.pattern() / patternGrob() could use them.
has_registered_pattern() returns whether pattern names are taken
i.e. whether registered_patterns() lists a pattern with that name
(for a bare name owned by anyone and for a qualified name owned by that owner)
even if the name doesn't resolve (e.g. because of a conflict).
Use has_registered_pattern() (not has_pattern()) to check that registering a pattern
won't clobber (nor conflict with) a pre-existing pattern.
See register_pattern() for how bare pattern names are resolved.
Arguments
- pattern
A character vector of bare pattern names
"name"and/or qualified pattern names"owner::name". Forhas_pattern()a qualified name"pkg::name"(or a bare name preferred to a pattern of{pkg}, seeprefer_pattern()) loads{pkg}'s namespace (if installed and not yet loaded) so it may register its patterns (likepkg::fndoes).
Value
registered_patterns() returns a data frame with columns
- name
The pattern name.
- owner
The package that registered the pattern or
"R_GlobalEnv"for the user.- kind
Either
"geometry"or"array".- source
One of
"builtin","register_pattern", or"options".- active
Whether the bare
namecurrently resolves to this pattern (without loading the package of a preferred pattern, seeprefer_pattern()).
has_pattern() and has_registered_pattern() return a logical vector
the same length as pattern.
For has_pattern() a bare name with an unresolved conflict (see conflicting_patterns())
returns FALSE as does a user's qualified name "R_GlobalEnv::name"
if the user has more than one pattern with that name
(only possible via the legacy ggpattern_geometry_funcs / ggpattern_array_funcs options)
but for has_registered_pattern() both return TRUE.
See also
register_pattern() to register patterns.
Examples
head(registered_patterns())
#> name owner kind source active
#> 1 ambient gridpattern array builtin TRUE
#> 2 aRtsy gridpattern geometry builtin TRUE
#> 3 circle gridpattern geometry builtin TRUE
#> 4 crosshatch gridpattern geometry builtin TRUE
#> 5 fill gridpattern geometry builtin TRUE
#> 6 gradient gridpattern geometry builtin TRUE
has_pattern(c("stripe", "gridpattern::stripe", "polygon"))
#> [1] TRUE TRUE FALSE
has_registered_pattern(c("stripe", "gridpattern::stripe", "polygon"))
#> [1] TRUE TRUE FALSE
create_pattern_polygon <- function(params, boundary_df, aspect_ratio, legend = FALSE) {
grid::polygonGrob(boundary_df$x, boundary_df$y, boundary_df$id,
gp = grid::gpar(fill = params$pattern_fill))
}
# don't clobber (nor conflict with) any pre-existing "polygon" pattern
run_example <- !has_registered_pattern("polygon")
if (run_example) {
register_pattern("polygon", create_pattern_polygon)
print(subset(registered_patterns(), name == "polygon"))
}
#> name owner kind source active
#> 15 polygon R_GlobalEnv geometry register_pattern TRUE
if (run_example) {
print(has_pattern("polygon"))
}
#> [1] TRUE
if (run_example) {
unregister_pattern("polygon")
}