Marc Kupietz | 5edb9c5 | 2025-10-05 16:41:01 +0200 | [diff] [blame^] | 1 | idsBaseFontFamily <- "Fira Sans Condensed" |
| 2 | |
| 3 | ids_font_available <- function(font_family) { |
| 4 | if (!requireNamespace("systemfonts", quietly = TRUE)) { |
| 5 | return(FALSE) |
| 6 | } |
| 7 | info <- tryCatch(systemfonts::font_info(font_family), error = function(e) NULL) |
| 8 | !is.null(info) && nrow(info) > 0 |
| 9 | } |
| 10 | |
| 11 | ids_resolve_font_family <- function(preferred = idsBaseFontFamily, fallback = "sans") { |
| 12 | candidates <- unique(stats::na.omit(c(preferred, idsBaseFontFamily, fallback))) |
| 13 | available <- vapply(candidates, ids_font_available, logical(1)) |
| 14 | if (any(available)) { |
| 15 | return(candidates[which(available)[1]]) |
| 16 | } |
| 17 | |
| 18 | if (requireNamespace("sysfonts", quietly = TRUE)) { |
| 19 | try(sysfonts::font_add_google("Fira Sans Condensed", "Fira Sans Condensed"), silent = TRUE) |
| 20 | if (requireNamespace("showtext", quietly = TRUE)) { |
| 21 | try(showtext::showtext_auto(enable = TRUE), silent = TRUE) |
| 22 | } |
| 23 | candidates_after <- unique(c("Fira Sans Condensed", candidates)) |
| 24 | available_after <- vapply(candidates_after, ids_font_available, logical(1)) |
| 25 | if (any(available_after)) { |
| 26 | return(candidates_after[which(available_after)[1]]) |
| 27 | } |
| 28 | } |
| 29 | |
| 30 | fallback |
| 31 | } |
Marc Kupietz | 5214481 | 2020-12-14 23:41:56 +0100 | [diff] [blame] | 32 | |
Marc Kupietz | 161a86a | 2021-02-02 14:40:23 +0100 | [diff] [blame] | 33 | |
| 34 | #' Title |
| 35 | #' |
| 36 | #' @return |
| 37 | #' @export |
| 38 | #' |
| 39 | #' @examples |
Marc Kupietz | 556dbd5 | 2021-02-04 14:53:21 +0100 | [diff] [blame] | 40 | idsPaletteIDS <- function() { |
Marc Kupietz | 161a86a | 2021-02-02 14:40:23 +0100 | [diff] [blame] | 41 | c( |
Marc Kupietz | 5edb9c5 | 2025-10-05 16:41:01 +0200 | [diff] [blame^] | 42 | "#F18700", |
| 43 | "#1E2662", |
| 44 | "#6A7702", |
| 45 | "#C10A25", |
| 46 | "#009EE3", |
| 47 | "#FAF3DE", |
| 48 | "#A7C2D2", |
| 49 | "#E2E8A4", |
| 50 | "#CFBCBD", |
| 51 | "#BCE3FA", |
| 52 | "#5C401C", |
| 53 | "#000000", |
| 54 | "#354C32", |
| 55 | "#5C131C", |
| 56 | "#273582", |
| 57 | "#FFE3BF", |
| 58 | "#8994E1", |
| 59 | "#A3B29E", |
| 60 | "#DF9599", |
| 61 | "#79B8DB" |
| 62 | ) |
Marc Kupietz | 161a86a | 2021-02-02 14:40:23 +0100 | [diff] [blame] | 63 | } |
Marc Kupietz | a371c67 | 2020-12-18 15:56:15 +0100 | [diff] [blame] | 64 | |
Marc Kupietz | 161a86a | 2021-02-02 14:40:23 +0100 | [diff] [blame] | 65 | #' Title |
| 66 | #' |
| 67 | #' @return |
| 68 | #' @export |
| 69 | #' |
| 70 | #' @examples |
| 71 | idsPaletteD3 <- function() { |
| 72 | c( |
Marc Kupietz | 5edb9c5 | 2025-10-05 16:41:01 +0200 | [diff] [blame^] | 73 | "#EB7C31", |
| 74 | "#1F77B4", |
| 75 | "#2CA02C", |
| 76 | "#D62728", |
| 77 | "#9467BD", |
| 78 | "#8C564B", |
| 79 | "#E377C2", |
| 80 | "#7F7F7F", |
| 81 | "#BCBD22", |
| 82 | "#17BECF", |
| 83 | "#AEC7E8", |
| 84 | "#FFBB78", |
| 85 | "#98DF8A", |
| 86 | "#FF9896", |
| 87 | "#C5B0D5", |
| 88 | "#C49C94", |
| 89 | "#F7B6D2", |
| 90 | "#C7C7C7", |
| 91 | "#DBDB8D", |
| 92 | "#9EDAE5" |
| 93 | ) |
Marc Kupietz | 161a86a | 2021-02-02 14:40:23 +0100 | [diff] [blame] | 94 | } |
Marc Kupietz | 5214481 | 2020-12-14 23:41:56 +0100 | [diff] [blame] | 95 | |
Marc Kupietz | 161a86a | 2021-02-02 14:40:23 +0100 | [diff] [blame] | 96 | #' Title |
| 97 | #' |
| 98 | #' @return |
| 99 | #' @export |
| 100 | #' |
| 101 | #' @examples |
Marc Kupietz | 556dbd5 | 2021-02-04 14:53:21 +0100 | [diff] [blame] | 102 | idsPalettePoly20 <- function() { |
| 103 | c( |
| 104 | "#EF8700", "#1642FF", "#00D20D", "#FF00CB", "#162E35", "#00C8FC", "#FF004B", "#BBB96A", "#DFA2ED", "#881640", "#22D0AD", "#CF0DF7", |
| 105 | "#2E0D95", "#AFB9BD", "#FC4792", "#EBA392", "#1C7C00", "#939CFF", "#AB00A4", "#AF1C00" |
| 106 | ) |
| 107 | } |
| 108 | |
| 109 | #' Title |
| 110 | #' |
| 111 | #' @return |
| 112 | #' @export |
| 113 | #' |
| 114 | #' @examples |
Marc Kupietz | 161a86a | 2021-02-02 14:40:23 +0100 | [diff] [blame] | 115 | idsPaletteGreyscale <- function() { |
| 116 | c( |
Marc Kupietz | 5edb9c5 | 2025-10-05 16:41:01 +0200 | [diff] [blame^] | 117 | "#000000", "#B2B0AD", "#737373", "#D8D7D6", "#B2B0AD", "#8C8984" |
Marc Kupietz | 161a86a | 2021-02-02 14:40:23 +0100 | [diff] [blame] | 118 | ) |
| 119 | } |
Marc Kupietz | 5214481 | 2020-12-14 23:41:56 +0100 | [diff] [blame] | 120 | |
Marc Kupietz | 556dbd5 | 2021-02-04 14:53:21 +0100 | [diff] [blame] | 121 | #' Title |
| 122 | #' |
| 123 | #' @return |
| 124 | #' @export |
| 125 | #' |
| 126 | #' @examples |
| 127 | idsPalette <- function() { |
| 128 | idsPaletteD3() |
| 129 | } |
| 130 | |
Marc Kupietz | 5214481 | 2020-12-14 23:41:56 +0100 | [diff] [blame] | 131 | backgroundColorDark <- "#2a2a2a" |
| 132 | textColorDark <- "#E0E0E3" |
| 133 | lowContrastColorDark <- "#707073" |
| 134 | highContrastColorDark <- "#F0F0F3" |
| 135 | mediumContrastColorDark <- "#808083" |
| 136 | |
| 137 | backgroundColor <- "#ffffff" |
| 138 | textColor <- "#383838" |
| 139 | highContrastColor <- "#101013" |
| 140 | lowContrastColor <- "#E0E0E3" |
| 141 | mediumContrastColor <- "#404043" |
| 142 | tooltipBackgroundColor <- "#ffffffe0" |
| 143 | boxplotFillColor <- "#505053" |
| 144 | candlestickColor <- "black" |
| 145 | errorbarColor <- "black" |
| 146 | |
Marc Kupietz | a371c67 | 2020-12-18 15:56:15 +0100 | [diff] [blame] | 147 | #' IDS color palette |
| 148 | #' |
Marc Kupietz | 556dbd5 | 2021-02-04 14:53:21 +0100 | [diff] [blame] | 149 | #' @param palette \code{c("d3", "grey", "ids", "poly20")} - default: (adapted) d3 palette |
Marc Kupietz | 5214481 | 2020-12-14 23:41:56 +0100 | [diff] [blame] | 150 | #' |
| 151 | #' @importFrom scales manual_pal |
| 152 | #' @export |
| 153 | #' |
| 154 | #' @references |
| 155 | #' |
| 156 | #' \url{https://github.com/d3/d3} |
| 157 | #' |
Marc Kupietz | 5edb9c5 | 2025-10-05 16:41:01 +0200 | [diff] [blame^] | 158 | ids_pal <- function(palette = "default") { |
Marc Kupietz | 556dbd5 | 2021-02-04 14:53:21 +0100 | [diff] [blame] | 159 | values <- switch(tolower(palette), |
Marc Kupietz | 5edb9c5 | 2025-10-05 16:41:01 +0200 | [diff] [blame^] | 160 | ids = idsPaletteIDS(), |
| 161 | gray = idsPaletteGreyscale(), |
| 162 | grey = idsPaletteGreyscale(), |
| 163 | poly20 = idsPalettePoly20(), |
| 164 | idsPaletteD3() |
Marc Kupietz | 556dbd5 | 2021-02-04 14:53:21 +0100 | [diff] [blame] | 165 | ) |
Marc Kupietz | 5214481 | 2020-12-14 23:41:56 +0100 | [diff] [blame] | 166 | f <- scales::manual_pal(values) |
| 167 | attr(f, "max_n") <- length(values) |
| 168 | f |
| 169 | } |