mirror of
https://github.com/scratchfoundation/paper.js.git
synced 2025-01-03 19:45:44 -05:00
Cache strokeBounds and bounds only if no transformation matrix is passed.
This commit is contained in:
parent
32ed418bdf
commit
ee6d593620
1 changed files with 9 additions and 2 deletions
|
@ -1011,10 +1011,13 @@ var Path = this.Path = PathItem.extend({
|
||||||
* @param matrix optional
|
* @param matrix optional
|
||||||
*/
|
*/
|
||||||
getBounds: function(/* matrix */) {
|
getBounds: function(/* matrix */) {
|
||||||
|
var useCache = arguments.length == 0;
|
||||||
// Pass the matrix hidden from Bootstrap, so it still inject
|
// Pass the matrix hidden from Bootstrap, so it still inject
|
||||||
// getBounds as bean too.
|
// getBounds as bean too.
|
||||||
if (!this._bounds) {
|
if (!useCache || !this._bounds) {
|
||||||
var bounds = getBounds(this, arguments[0]);
|
var bounds = getBounds(this, arguments[0]);
|
||||||
|
if (!useCache)
|
||||||
|
return bounds;
|
||||||
this._bounds = LinkedRectangle.create(this, 'setBounds',
|
this._bounds = LinkedRectangle.create(this, 'setBounds',
|
||||||
bounds.x, bounds.y, bounds.width, bounds.height);
|
bounds.x, bounds.y, bounds.width, bounds.height);
|
||||||
}
|
}
|
||||||
|
@ -1025,6 +1028,9 @@ var Path = this.Path = PathItem.extend({
|
||||||
* The bounding rectangle of the item including stroke width.
|
* The bounding rectangle of the item including stroke width.
|
||||||
*/
|
*/
|
||||||
getStrokeBounds: function(/* matrix */) {
|
getStrokeBounds: function(/* matrix */) {
|
||||||
|
var useCache = arguments.length == 0;
|
||||||
|
if (this._strokeBounds && useCache)
|
||||||
|
return this._strokeBounds;
|
||||||
var matrix = arguments[0], // set #getBounds()
|
var matrix = arguments[0], // set #getBounds()
|
||||||
width = this.getStrokeWidth(),
|
width = this.getStrokeWidth(),
|
||||||
radius = width / 2,
|
radius = width / 2,
|
||||||
|
@ -1124,7 +1130,8 @@ var Path = this.Path = PathItem.extend({
|
||||||
addCap(segments[0], cap, 0);
|
addCap(segments[0], cap, 0);
|
||||||
addCap(segments[length - 1], cap, 1);
|
addCap(segments[length - 1], cap, 1);
|
||||||
}
|
}
|
||||||
|
if (useCache)
|
||||||
|
this._strokeBounds = bounds;
|
||||||
return bounds;
|
return bounds;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue