From 1049214126dff47158310cd901f00b737ce6226d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrg=20Lehni?= Date: Wed, 6 Nov 2013 12:53:10 +0100 Subject: [PATCH] Remove ctx.currentPath caching again, since it has the current affine transformation factored in and is thus useless to us. --- src/path/CompoundPath.js | 20 ++++---------------- src/path/Path.js | 24 +++++++----------------- 2 files changed, 11 insertions(+), 33 deletions(-) diff --git a/src/path/CompoundPath.js b/src/path/CompoundPath.js index 24cb438d..0e5739ae 100644 --- a/src/path/CompoundPath.js +++ b/src/path/CompoundPath.js @@ -57,13 +57,6 @@ var CompoundPath = PathItem.extend(/** @lends CompoundPath# */{ this.addChildren(Array.isArray(arg) ? arg : arguments); }, - _changed: function _changed(flags) { - _changed.base.call(this, flags); - // Delete cached native Path - if (flags & (/*#=*/ ChangeFlag.HIERARCHY | /*#=*/ ChangeFlag.GEOMETRY)) - delete this._currentPath; - }, - insertChildren: function insertChildren(index, items, _preserve) { // Pass on 'path' for _type, to make sure that only paths are added as // children. @@ -226,15 +219,10 @@ var CompoundPath = PathItem.extend(/** @lends CompoundPath# */{ if (children.length === 0) return; - if (this._currentPath) { - ctx.currentPath = this._currentPath; - } else { - ctx.beginPath(); - param = param.extend({ compound: true }); - for (var i = 0, l = children.length; i < l; i++) - children[i].draw(ctx, param); - this._currentPath = ctx.currentPath; - } + ctx.beginPath(); + param = param.extend({ compound: true }); + for (var i = 0, l = children.length; i < l; i++) + children[i].draw(ctx, param); if (!param.clip) { this._setStyles(ctx); diff --git a/src/path/Path.js b/src/path/Path.js index 729ad228..fc74146e 100644 --- a/src/path/Path.js +++ b/src/path/Path.js @@ -115,8 +115,6 @@ var Path = PathItem.extend(/** @lends Path# */{ _changed: function _changed(flags) { _changed.base.call(this, flags); if (flags & /*#=*/ ChangeFlag.GEOMETRY) { - // Delete cached native Path - delete (this._compound ? this._parent : this)._currentPath; delete this._length; // Clockwise state becomes undefined as soon as geometry changes. delete this._clockwise; @@ -1998,8 +1996,7 @@ var Path = PathItem.extend(/** @lends Path# */{ return { _draw: function(ctx, param) { var clip = param.clip, - // Also mark this Path as _compound so _changed() knows about it - compound = this._compound = param.compound; + compound = param.compound; if (!compound) ctx.beginPath(); @@ -2017,19 +2014,12 @@ var Path = PathItem.extend(/** @lends Path# */{ return dashArray[((i % dashLength) + dashLength) % dashLength]; } - // CompoundPath collects its own _currentPath - if (!compound && this._currentPath) { - ctx.currentPath = this._currentPath; - } else { - // Prepare the canvas path if we have any situation that - // requires it to be defined. - if (hasFill || hasStroke && !dashLength || compound || clip) - drawSegments(ctx, this); - if (this._closed) - ctx.closePath(); - if (!compound) - this._currentPath = ctx.currentPath; - } + // Prepare the canvas path if we have any situation that + // requires it to be defined. + if (hasFill || hasStroke && !dashLength || compound || clip) + drawSegments(ctx, this); + if (this._closed) + ctx.closePath(); if (!clip && !compound && (hasFill || hasStroke)) { // If the path is part of a compound path or doesn't have a fill