R/draw-key-triangle.R

Defines functions draw_key_triangle

#' @noRd
draw_key_triangle <- function(data, params, size) {
  if (is.null(data$size)) {
    data$size <- 0.5
  }
  lwd <- min(data$size, min(size)/4)
  r0 <- params$r0 %||% 0.5
  if(params$mode == "lt-rb") {
    grid::grobTree(
      grid::polygonGrob(
        x = c(0.5 - r0, 0.5 + r0, 0.5 + r0, 0.5 - r0),
        y = c(0.5 + r0, 0.5 + r0, 0.5 - r0, 0.5 + r0),
        gp = grid::gpar(col = data$colour %||% NA,
                        fill = scales::alpha(data$fill %||% data$fill.upper %||% "grey40", data$alpha),
                        lty = data$linetype %||% 1,
                        lwd = lwd * ggplot2::.pt,
                        linejoin = params$linejoin %||% "mitre",
                        lineend = if (identical(params$linejoin, "round")) "round" else "square")),
      grid::polygonGrob(
        x = c(0.5 - r0, 0.5 - r0, 0.5 + r0, 0.5 - r0),
        y = c(0.5 + r0, 0.5 - r0, 0.5 - r0, 0.5 + r0),
        gp = grid::gpar(col = data$colour %||% NA,
                        fill = scales::alpha(data$fill %||% data$fill.lower %||% "grey80", data$alpha),
                        lty = data$linetype %||% 1,
                        lwd = lwd * ggplot2::.pt,
                        linejoin = params$linejoin %||% "mitre",
                        lineend = if (identical(params$linejoin, "round")) "round" else "square"))
    )
  } else {
    grid::grobTree(
      grid::polygonGrob(
        x = c(0.5 - r0, 0.5 - r0, 0.5 + r0, 0.5 - r0),
        y = c(0.5 + r0, 0.5 - r0, 0.5 + r0, 0.5 + r0),
        gp = grid::gpar(col = data$colour %||% NA,
                        fill = scales::alpha(data$fill %||% data$fill.upper %||% "grey40", data$alpha),
                        lty = data$linetype %||% 1,
                        lwd = lwd * ggplot2::.pt,
                        linejoin = params$linejoin %||% "mitre",
                        lineend = if (identical(params$linejoin, "round")) "round" else "square")),
      grid::polygonGrob(
        x = c(0.5 - r0, 0.5 + r0, 0.5 + r0, 0.5 - r0),
        y = c(0.5 - r0, 0.5 - r0, 0.5 + r0, 0.5 - r0),
        gp = grid::gpar(col = data$colour %||% NA,
                        fill = scales::alpha(data$fill %||% data$fill.lower %||% "grey80", data$alpha),
                        lty = data$linetype %||% 1,
                        lwd = lwd * ggplot2::.pt,
                        linejoin = params$linejoin %||% "mitre",
                        lineend = if (identical(params$linejoin, "round")) "round" else "square"))
    )
  }
}
houyunhuang/ggtriangle documentation built on May 11, 2020, 2:02 p.m.