@@ -116,6 +116,19 @@ p5.prototype.loop = function() {
116116 this . _draw ( ) ;
117117} ;
118118
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+
119132/**
120133 * The push() function saves the current drawing style settings and
121134 * transformations, while pop() restores these settings. Note that these
@@ -175,19 +188,23 @@ p5.prototype.loop = function() {
175188p5 . prototype . push = function ( ) {
176189 this . _renderer . push ( ) ;
177190 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+ }
191208 } ) ;
192209} ;
193210
@@ -250,9 +267,8 @@ p5.prototype.push = function() {
250267p5 . prototype . pop = function ( ) {
251268 this . _renderer . pop ( ) ;
252269 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 ) ;
256272} ;
257273
258274p5 . prototype . pushStyle = function ( ) {
0 commit comments