1.MAPTOOLS_CACHE <- new.env(FALSE, parent=globalenv())
2
3#.onLoad <- function(lib, pkg) {
4#    assign("gpclib", FALSE, envir=.MAPTOOLS_CACHE)
5#}
6register_s3_method <- function(pkg, generic, class, fun = NULL) {
7  stopifnot(is.character(pkg), length(pkg) == 1L)
8  stopifnot(is.character(generic), length(generic) == 1L)
9  stopifnot(is.character(class), length(class) == 1L)
10
11  if (is.null(fun)) {
12    fun <- get(paste0(generic, ".", class), envir = parent.frame())
13  } else {
14    stopifnot(is.function(fun))
15  }
16
17  if (isNamespaceLoaded(pkg)) {
18    registerS3method(generic, class, fun, envir = asNamespace(pkg))
19  }
20
21  # Always register hook in case package is later unloaded & reloaded
22  setHook(
23    packageEvent(pkg, "onLoad"),
24    function(...) {
25      registerS3method(generic, class, fun, envir = asNamespace(pkg))
26    }
27  )
28}
29
30
31.onLoad <- function(lib, pkg) {
32    assign("gpclib", FALSE, envir=.MAPTOOLS_CACHE)
33    rgeosI <- setRgeosStatus()
34    if (getRversion() < "3.6.0") {
35      register_s3_method("spatstat.geom", "as.im", "RasterLayer")
36      register_s3_method("spatstat.geom", "as.im", "SpatialGridDataFrame")
37      register_s3_method("spatstat.linnet", "as.linnet", "SpatialLines")
38      register_s3_method("spatstat.geom", "as.owin", "SpatialGridDataFrame")
39      register_s3_method("spatstat.geom", "as.owin", "SpatialPixelsDataFrame")
40      register_s3_method("spatstat.geom", "as.owin", "SpatialPolygons")
41      register_s3_method("spatstat.geom", "as.ppp", "SpatialPoints")
42      register_s3_method("spatstat.geom", "as.ppp", "SpatialPointsDataFrame")
43      register_s3_method("spatstat.geom", "as.psp", "Line")
44      register_s3_method("spatstat.geom", "as.psp", "Lines")
45      register_s3_method("spatstat.geom", "as.psp", "SpatialLines")
46      register_s3_method("spatstat.geom", "as.psp", "SpatialLinesDataFrame")
47    }
48    invisible(NULL)
49}
50
51.onAttach <- function(lib, pkg) {
52#    assign("gpclib", FALSE, envir=.MAPTOOLS_CACHE)
53    Smess <- paste("Checking rgeos availability: ")
54#    rgeosI <- setRgeosStatus()
55    rgeosI <- rgeosStatus()
56    Smess <- paste(Smess, rgeosI, "\n", sep="")
57    Smess <- paste(Smess, "Please note that 'maptools' will be retired by the end of 2023,\nplan transition at your earliest convenience;\nsome functionality will be moved to 'sp'.\n", sep="")
58    if (!rgeosI) Smess <- paste(Smess,
59              "\tNote: when rgeos is not available, polygon geometry",
60              "\tcomputations in maptools depend on gpclib,\n",
61              "\twhich has a restricted licence. It is disabled by default;\n",
62              "\tto enable gpclib, type gpclibPermit()\n")
63    packageStartupMessage(Smess, appendLF = FALSE)
64}
65
66.onUnload <- function(libpath) {
67    rm(.MAPTOOLS_CACHE)
68}
69
70
71