@@ -169,6 +169,12 @@ Layer <- ggproto("Layer", NULL,
169
169
geom_params = NULL ,
170
170
stat = NULL ,
171
171
stat_params = NULL ,
172
+
173
+ # These two fields carry state throughout rendering but will always be
174
+ # calculated before use
175
+ computed_geom_params = NULL ,
176
+ computed_stat_params = NULL ,
177
+
172
178
data = NULL ,
173
179
aes_params = NULL ,
174
180
mapping = NULL ,
@@ -276,9 +282,9 @@ Layer <- ggproto("Layer", NULL,
276
282
if (empty(data ))
277
283
return (new_data_frame())
278
284
279
- params <- self $ stat $ setup_params(data , self $ stat_params )
280
- data <- self $ stat $ setup_data(data , params )
281
- self $ stat $ compute_layer(data , params , layout )
285
+ self $ computed_stat_params <- self $ stat $ setup_params(data , self $ stat_params )
286
+ data <- self $ stat $ setup_data(data , self $ computed_stat_params )
287
+ self $ stat $ compute_layer(data , self $ computed_stat_params , layout )
282
288
},
283
289
284
290
map_statistic = function (self , data , plot ) {
@@ -339,8 +345,8 @@ Layer <- ggproto("Layer", NULL,
339
345
c(names(data ), names(self $ aes_params )),
340
346
snake_class(self $ geom )
341
347
)
342
- self $ geom_params <- self $ geom $ setup_params(data , c(self $ geom_params , self $ aes_params ))
343
- self $ geom $ setup_data(data , self $ geom_params )
348
+ self $ computed_geom_params <- self $ geom $ setup_params(data , c(self $ geom_params , self $ aes_params ))
349
+ self $ geom $ setup_data(data , self $ computed_geom_params )
344
350
},
345
351
346
352
compute_position = function (self , data , layout ) {
@@ -363,7 +369,7 @@ Layer <- ggproto("Layer", NULL,
363
369
},
364
370
365
371
finish_statistics = function (self , data ) {
366
- self $ stat $ finish_layer(data , self $ stat_params )
372
+ self $ stat $ finish_layer(data , self $ computed_stat_params )
367
373
},
368
374
369
375
draw_geom = function (self , data , layout ) {
@@ -372,8 +378,8 @@ Layer <- ggproto("Layer", NULL,
372
378
return (rep(list (zeroGrob()), n ))
373
379
}
374
380
375
- data <- self $ geom $ handle_na(data , self $ geom_params )
376
- self $ geom $ draw_layer(data , self $ geom_params , layout , layout $ coord )
381
+ data <- self $ geom $ handle_na(data , self $ computed_geom_params )
382
+ self $ geom $ draw_layer(data , self $ computed_geom_params , layout , layout $ coord )
377
383
}
378
384
)
379
385
0 commit comments