@@ -116,6 +116,19 @@ p5.prototype.loop = function() {
116
116
this . _draw ( ) ;
117
117
} ;
118
118
119
+ function assign ( dest , varArgs ) {
120
+ for ( var index = 1 ; index < arguments . length ; index ++ ) {
121
+ var src = arguments [ index ] ;
122
+ if ( src != null ) {
123
+ for ( var key in src ) {
124
+ if ( src . hasOwnProperty ( key ) ) {
125
+ dest [ key ] = src [ key ] ;
126
+ }
127
+ }
128
+ }
129
+ }
130
+ }
131
+
119
132
/**
120
133
* The push() function saves the current drawing style settings and
121
134
* transformations, while pop() restores these settings. Note that these
@@ -175,19 +188,23 @@ p5.prototype.loop = function() {
175
188
p5 . prototype . push = function ( ) {
176
189
this . _renderer . push ( ) ;
177
190
this . _styles . push ( {
178
- _doStroke : this . _renderer . _doStroke ,
179
- _strokeSet : this . _renderer . _strokeSet ,
180
- _doFill : this . _renderer . _doFill ,
181
- _fillSet : this . _renderer . _fillSet ,
182
- _tint : this . _renderer . _tint ,
183
- _imageMode : this . _renderer . _imageMode ,
184
- _rectMode : this . _renderer . _rectMode ,
185
- _ellipseMode : this . _renderer . _ellipseMode ,
186
- _colorMode : this . _renderer . _colorMode ,
187
- _textFont : this . _renderer . _textFont ,
188
- _textLeading : this . _renderer . _textLeading ,
189
- _textSize : this . _renderer . _textSize ,
190
- _textStyle : this . _renderer . _textStyle
191
+ props : {
192
+ _colorMode : this . _colorMode
193
+ } ,
194
+ renderer : {
195
+ _doStroke : this . _renderer . _doStroke ,
196
+ _strokeSet : this . _renderer . _strokeSet ,
197
+ _doFill : this . _renderer . _doFill ,
198
+ _fillSet : this . _renderer . _fillSet ,
199
+ _tint : this . _renderer . _tint ,
200
+ _imageMode : this . _renderer . _imageMode ,
201
+ _rectMode : this . _renderer . _rectMode ,
202
+ _ellipseMode : this . _renderer . _ellipseMode ,
203
+ _textFont : this . _renderer . _textFont ,
204
+ _textLeading : this . _renderer . _textLeading ,
205
+ _textSize : this . _renderer . _textSize ,
206
+ _textStyle : this . _renderer . _textStyle
207
+ }
191
208
} ) ;
192
209
} ;
193
210
@@ -250,9 +267,8 @@ p5.prototype.push = function() {
250
267
p5 . prototype . pop = function ( ) {
251
268
this . _renderer . pop ( ) ;
252
269
var lastS = this . _styles . pop ( ) ;
253
- for ( var prop in lastS ) {
254
- this . _renderer [ prop ] = lastS [ prop ] ;
255
- }
270
+ assign ( this . _renderer , lastS . renderer ) ;
271
+ assign ( this , lastS . props ) ;
256
272
} ;
257
273
258
274
p5 . prototype . pushStyle = function ( ) {
0 commit comments