Skip to content

Commit 8b285a5

Browse files
authored
Merge pull request #16 from teunbrand/S7_elements
S7 elements
2 parents 38ae287 + 4b7a189 commit 8b285a5

32 files changed

+824
-608
lines changed

DESCRIPTION

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,8 @@ Collate:
177177
'grob-dotstack.R'
178178
'grob-null.R'
179179
'grouping.R'
180+
'properties.R'
181+
'margins.R'
180182
'theme-elements.R'
181183
'guide-.R'
182184
'guide-axis.R'
@@ -201,7 +203,6 @@ Collate:
201203
'layer-sf.R'
202204
'layout.R'
203205
'limits.R'
204-
'margins.R'
205206
'performance.R'
206207
'plot-build.R'
207208
'plot-construction.R'

NAMESPACE

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,25 @@
11
# Generated by roxygen2: do not edit by hand
22

3+
S3method("$","ggplot2::element")
34
S3method("$","ggplot2::gg")
45
S3method("$","ggplot2::theme")
56
S3method("$",ggproto)
67
S3method("$",ggproto_parent)
8+
S3method("$<-","ggplot2::element")
79
S3method("$<-","ggplot2::gg")
810
S3method("$<-","ggplot2::mapping")
11+
S3method("[","ggplot2::element")
912
S3method("[","ggplot2::gg")
1013
S3method("[","ggplot2::mapping")
1114
S3method("[",mapped_discrete)
15+
S3method("[<-","ggplot2::element")
1216
S3method("[<-","ggplot2::gg")
1317
S3method("[<-","ggplot2::mapping")
1418
S3method("[<-",mapped_discrete)
19+
S3method("[[","ggplot2::element")
1520
S3method("[[","ggplot2::gg")
1621
S3method("[[",ggproto)
22+
S3method("[[<-","ggplot2::element")
1723
S3method("[[<-","ggplot2::gg")
1824
S3method("[[<-","ggplot2::mapping")
1925
S3method(.DollarNames,ggproto)
@@ -23,12 +29,6 @@ S3method(autolayer,default)
2329
S3method(autoplot,default)
2430
S3method(c,mapped_discrete)
2531
S3method(drawDetails,zeroGrob)
26-
S3method(element_grob,element_blank)
27-
S3method(element_grob,element_line)
28-
S3method(element_grob,element_point)
29-
S3method(element_grob,element_polygon)
30-
S3method(element_grob,element_rect)
31-
S3method(element_grob,element_text)
3232
S3method(format,ggproto)
3333
S3method(format,ggproto_method)
3434
S3method(fortify,"NULL")
@@ -75,10 +75,6 @@ S3method(limits,character)
7575
S3method(limits,factor)
7676
S3method(limits,numeric)
7777
S3method(makeContext,dotstackGrob)
78-
S3method(merge_element,default)
79-
S3method(merge_element,element)
80-
S3method(merge_element,element_blank)
81-
S3method(merge_element,margin)
8278
S3method(pattern_alpha,GridPattern)
8379
S3method(pattern_alpha,GridTilingPattern)
8480
S3method(pattern_alpha,default)
@@ -330,6 +326,7 @@ export(draw_key_vline)
330326
export(draw_key_vpath)
331327
export(dup_axis)
332328
export(el_def)
329+
export(element)
333330
export(element_blank)
334331
export(element_geom)
335332
export(element_grob)

R/coord-sf.R

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -334,13 +334,13 @@ CoordSf <- ggproto("CoordSf", CoordCartesian,
334334

335335
# we don't draw the graticules if the major panel grid is
336336
# turned off
337-
if (inherits(el, "element_blank")) {
337+
if (is_theme_element(el, "blank")) {
338338
grobs <- list(element_render(theme, "panel.background"))
339339
} else {
340340
line_gp <- gg_par(
341-
col = el$colour,
342-
lwd = el$linewidth,
343-
lty = el$linetype
341+
col = el@colour,
342+
lwd = el@linewidth,
343+
lty = el@linetype
344344
)
345345
grobs <- c(
346346
list(element_render(theme, "panel.background")),

R/geom-.R

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ eval_from_theme <- function(aesthetics, theme, class = NULL) {
245245
return(aesthetics)
246246
}
247247

248-
element <- calc_element("geom", theme) %||% .default_geom_element
248+
el <- calc_element("geom", theme) %||% .default_geom_element
249249
class <- setdiff(class, c("Geom", "ggproto", "gg"))
250250

251251
if (length(class) > 0) {
@@ -260,12 +260,12 @@ eval_from_theme <- function(aesthetics, theme, class = NULL) {
260260
# Inherit up to parent geom class
261261
if (length(class) > 0) {
262262
for (cls in rev(class)) {
263-
element <- combine_elements(theme[[cls]], element)
263+
el <- combine_elements(theme[[cls]], el)
264264
}
265265
}
266266
}
267267

268-
lapply(aesthetics[themed], eval_tidy, data = element)
268+
lapply(aesthetics[themed], eval_tidy, data = S7::props(el))
269269
}
270270

271271
#' Graphical units

R/geom-label.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ GeomLabel <- ggproto("GeomLabel", Geom,
8888
data <- coord$transform(data, panel_params)
8989
data$vjust <- compute_just(data$vjust, data$y, data$x, data$angle)
9090
data$hjust <- compute_just(data$hjust, data$x, data$y, data$angle)
91-
if (!is_margin("margin")) {
91+
if (!is_margin(label.padding)) {
9292
label.padding <- rep(label.padding, length.out = 4)
9393
}
9494

R/guide-.R

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,7 @@ Guide <- ggproto(
376376
# Renders tickmarks
377377
build_ticks = function(key, elements, params, position = params$position,
378378
length = elements$ticks_length) {
379+
force(length)
379380
if (!is_theme_element(elements)) {
380381
elements <- elements$ticks
381382
}

R/guide-axis-logticks.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ guide_axis_logticks <- function(
119119
allow_null = TRUE
120120
)
121121
check_bool(expanded)
122-
check_inherits(short.theme, c("element_blank", "element_line"))
122+
check_inherits(short.theme, c("ggplot2::element_blank", "ggplot2::element_line"))
123123

124124
new_guide(
125125
available_aes = c("x", "y"),

R/guide-axis-theta.R

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ GuideAxisTheta <- ggproto(
154154
}
155155

156156
offset <- max(unit(0, "pt"), elements$major_length, elements$minor_length)
157-
elements$offset <- offset + max(elements$text$margin %||% unit(0, "pt"))
157+
elements$offset <- offset + max(elements$text@margin %||% unit(0, "pt"))
158158
elements
159159
},
160160

@@ -184,7 +184,7 @@ GuideAxisTheta <- ggproto(
184184

185185
build_labels = function(key, elements, params) {
186186

187-
if (inherits(elements$text, "element_blank")) {
187+
if (is_theme_element(elements$text, "blank")) {
188188
return(zeroGrob())
189189
}
190190

@@ -198,7 +198,7 @@ GuideAxisTheta <- ggproto(
198198

199199
# Resolve text angle
200200
if (is.waiver(params$angle) || is.null(params$angle)) {
201-
angle <- elements$text$angle
201+
angle <- elements$text@angle
202202
} else {
203203
angle <- flip_text_angle(params$angle - rad2deg(key$theta))
204204
}
@@ -268,20 +268,20 @@ GuideAxisTheta <- ggproto(
268268
key <- params$key
269269
key <- vec_slice(key, !is.na(key$.label) & nzchar(key$.label))
270270
labels <- validate_labels(key$.label)
271-
if (length(labels) == 0 || inherits(elements$text, "element_blank")) {
271+
if (length(labels) == 0 || is_theme_element(elements$text, "blank")) {
272272
return(list(offset = offset))
273273
}
274274

275275
# Resolve text angle
276276
if (is.waiver(params$angle %||% waiver())) {
277-
angle <- elements$text$angle
277+
angle <- elements$text@angle
278278
} else {
279279
angle <- flip_text_angle(params$angle - rad2deg(key$theta))
280280
}
281281
angle <- key$theta + deg2rad(angle)
282282

283283
# Set margin
284-
margin <- rep(max(elements$text$margin), length.out = 4)
284+
margin <- rep(max(elements$text@margin), length.out = 4)
285285

286286
# Measure size of each individual label
287287
single_labels <- lapply(labels, function(lab) {
@@ -365,7 +365,7 @@ GuideAxisTheta <- ggproto(
365365

366366
theta_tickmarks <- function(key, element, length, offset = NULL) {
367367
n_breaks <- nrow(key)
368-
if (n_breaks < 1 || inherits(element, "element_blank")) {
368+
if (n_breaks < 1 || is_theme_element(element, "blank")) {
369369
return(zeroGrob())
370370
}
371371

R/guide-axis.R

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -259,10 +259,10 @@ GuideAxis <- ggproto(
259259
override_elements = function(params, elements, theme) {
260260
elements$text <-
261261
label_angle_heuristic(elements$text, params$position, params$angle)
262-
if (inherits(elements$ticks, "element_blank")) {
262+
if (is_theme_element(elements$ticks, "blank")) {
263263
elements$major_length <- unit(0, "cm")
264264
}
265-
if (inherits(elements$minor, "element_blank") || isFALSE(params$minor.ticks)) {
265+
if (is_theme_element(elements$minor, "blank") || isFALSE(params$minor.ticks)) {
266266
elements$minor_length <- unit(0, "cm")
267267
}
268268
return(elements)
@@ -379,7 +379,7 @@ GuideAxis <- ggproto(
379379
# Ticks
380380
major_cm <- convertUnit(elements$major_length, "cm", valueOnly = TRUE)
381381
range <- range(0, major_cm)
382-
if (params$minor.ticks && !inherits(elements$minor, "element_blank")) {
382+
if (params$minor.ticks && !is_theme_element(elements$minor, "blank")) {
383383
minor_cm <- convertUnit(elements$minor_length, "cm", valueOnly = TRUE)
384384
range <- range(range, minor_cm)
385385
}
@@ -450,13 +450,13 @@ GuideAxis <- ggproto(
450450
# rather than dimensions of this axis alone.
451451
if (has_labels && params$position %in% c("left", "right")) {
452452
where <- layout$l[-c(1, length(layout$l))]
453-
just <- with(elements$text, rotate_just(angle, hjust, vjust))$hjust %||% 0.5
453+
just <- with(S7::props(elements$text), rotate_just(angle, hjust, vjust))$hjust %||% 0.5
454454
gt <- gtable_add_cols(gt, unit(just, "null"), pos = min(where) - 1)
455455
gt <- gtable_add_cols(gt, unit(1 - just, "null"), pos = max(where) + 1)
456456
}
457457
if (has_labels && params$position %in% c("top", "bottom")) {
458458
where <- layout$t[-c(1, length(layout$t))]
459-
just <- with(elements$text, rotate_just(angle, hjust, vjust))$vjust %||% 0.5
459+
just <- with(S7::props(elements$text), rotate_just(angle, hjust, vjust))$vjust %||% 0.5
460460
gt <- gtable_add_rows(gt, unit(1 - just, "null"), pos = min(where) - 1)
461461
gt <- gtable_add_rows(gt, unit(just, "null"), pos = max(where) + 1)
462462
}
@@ -590,7 +590,7 @@ axis_label_priority_between <- function(x, y) {
590590
#' overridden from the user- or theme-supplied element.
591591
#' @noRd
592592
label_angle_heuristic <- function(element, position, angle) {
593-
if (!inherits(element, "element_text")
593+
if (!is_theme_element(element, "text")
594594
|| is.null(position)
595595
|| is.null(angle %|W|% NULL)) {
596596
return(element)
@@ -612,8 +612,8 @@ label_angle_heuristic <- function(element, position, angle) {
612612
hjust <- switch(position, left = cosine, right = 1 - cosine, top = 1 - sine, sine)
613613
vjust <- switch(position, left = 1 - sine, right = sine, top = 1 - cosine, cosine)
614614

615-
element$angle <- angle %||% element$angle
616-
element$hjust <- hjust %||% element$hjust
617-
element$vjust <- vjust %||% element$vjust
615+
element@angle <- angle %||% element@angle
616+
element@hjust <- hjust %||% element@hjust
617+
element@vjust <- vjust %||% element@vjust
618618
element
619619
}

R/guide-custom.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ GuideCustom <- ggproto(
113113

114114
gt <- self$add_title(
115115
gt, title, title_position,
116-
with(elems$title, rotate_just(angle, hjust, vjust))
116+
with(S7::props(elems$title), rotate_just(angle, hjust, vjust))
117117
)
118118

119119
# Add padding and background

0 commit comments

Comments
 (0)