From 083a9864f0aa43ed0232a8bfaa4e89873dec320c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrg=20Lehni?= Date: Sat, 5 Mar 2011 01:42:24 +0000 Subject: [PATCH] Use Matrix#transformBounds() in DocumentView#getBounds(). --- src/document/DocumentView.js | 38 ++++++++---------------------------- 1 file changed, 8 insertions(+), 30 deletions(-) diff --git a/src/document/DocumentView.js b/src/document/DocumentView.js index d76497ba..d00fee72 100644 --- a/src/document/DocumentView.js +++ b/src/document/DocumentView.js @@ -41,7 +41,15 @@ var DocumentView = this.DocumentView = Base.extend({ this.transform(mx); }, + transform: function(matrix, flags) { + this.matrix.preConcatenate(matrix); + this._bounds = null; + }, + getBounds: function() { + if (!this._bounds) { + this._bounds = this.matrix.transformBounds(this.document.bounds); + } return this._bounds; }, @@ -63,35 +71,5 @@ var DocumentView = this.DocumentView = Base.extend({ viewToArtwork: function(point) { // TODO: cache the inverse matrix: return this.matrix.createInverse().transform(point); - }, - - // TODO: inherit this code somehow? - transform: function(matrix, flags) { - var width = this.document.bounds.width; - var height = this.document.bounds.height; - var x = width * -0.5; - var y = height * -0.5; - var coords = [ - x, y, - x + width, y, - x + width, y + height, - x, y + height]; - this.matrix.preConcatenate(matrix); - this.matrix.createInverse().transform(coords, 0, coords, 0, 4); - var xMin = coords[0], xMax = coords[0]; - var yMin = coords[1], yMax = coords[1]; - for (var i = 2; i < 8; i += 2) { - var x = coords[i]; - var y = coords[i + 1]; - xMin = Math.min(x, xMin); - xMax = Math.max(x, xMax); - yMin = Math.min(y, yMin); - yMax = Math.max(y, yMax); - }; - var bounds = this._bounds; - bounds.x = xMin; - bounds.y = yMin; - bounds.width = xMax - xMin; - bounds.height = yMax - yMin; } });