diff --git a/src/pixi/display/DisplayObject.js b/src/pixi/display/DisplayObject.js index 53cce04..b7f4347 100644 --- a/src/pixi/display/DisplayObject.js +++ b/src/pixi/display/DisplayObject.js @@ -169,6 +169,14 @@ this.filterArea = new PIXI.Rectangle(0,0,1,1); + + /** + * + * + * + */ + this._bounds = new PIXI.Rectangle(0, 0, 1, 1); + /* * MOUSE Callbacks */ @@ -567,4 +575,11 @@ this.vcount = PIXI.visibleCount; }; +PIXI.DisplayObject.prototype.getBounds = function() +{ + return PIXI.EmptyRectangle; +} + +PIXI.EmptyRectangle = new PIXI.Rectangle(0,0,0,0); + PIXI.visibleCount = 0; \ No newline at end of file diff --git a/src/pixi/display/DisplayObject.js b/src/pixi/display/DisplayObject.js index 53cce04..b7f4347 100644 --- a/src/pixi/display/DisplayObject.js +++ b/src/pixi/display/DisplayObject.js @@ -169,6 +169,14 @@ this.filterArea = new PIXI.Rectangle(0,0,1,1); + + /** + * + * + * + */ + this._bounds = new PIXI.Rectangle(0, 0, 1, 1); + /* * MOUSE Callbacks */ @@ -567,4 +575,11 @@ this.vcount = PIXI.visibleCount; }; +PIXI.DisplayObject.prototype.getBounds = function() +{ + return PIXI.EmptyRectangle; +} + +PIXI.EmptyRectangle = new PIXI.Rectangle(0,0,0,0); + PIXI.visibleCount = 0; \ No newline at end of file diff --git a/src/pixi/display/DisplayObjectContainer.js b/src/pixi/display/DisplayObjectContainer.js index 9f32a51..de8d0ab 100644 --- a/src/pixi/display/DisplayObjectContainer.js +++ b/src/pixi/display/DisplayObjectContainer.js @@ -37,12 +37,11 @@ */ PIXI.DisplayObjectContainer.prototype.addChild = function(child) { - if(child.parent !== undefined) + if(child.parent) { - //// COULD BE THIS??? child.parent.removeChild(child); - // return; + // return; } child.parent = this; @@ -343,3 +342,46 @@ this.children[i].updateTransform(); } }; + +PIXI.DisplayObjectContainer.prototype.getBounds = function() +{ + if(this.children.length === 0)return PIXI.EmptyRectangle; + + var minX = Infinity; + var minY = Infinity; + + var maxX = -Infinity; + var maxY = -Infinity; + + var childBounds; + var childMaxX; + var childMaxY; + + for(var i=0,j=this.children.length; i childMaxX ? maxX : childMaxX; + maxY = maxY > childMaxY ? maxY : childMaxY; + } + + var bounds = this._bounds; + + bounds.x = minX; + bounds.y = minY; + bounds.width = maxX - minX; + bounds.height = maxY - minY; + + return bounds; +} + diff --git a/src/pixi/display/DisplayObject.js b/src/pixi/display/DisplayObject.js index 53cce04..b7f4347 100644 --- a/src/pixi/display/DisplayObject.js +++ b/src/pixi/display/DisplayObject.js @@ -169,6 +169,14 @@ this.filterArea = new PIXI.Rectangle(0,0,1,1); + + /** + * + * + * + */ + this._bounds = new PIXI.Rectangle(0, 0, 1, 1); + /* * MOUSE Callbacks */ @@ -567,4 +575,11 @@ this.vcount = PIXI.visibleCount; }; +PIXI.DisplayObject.prototype.getBounds = function() +{ + return PIXI.EmptyRectangle; +} + +PIXI.EmptyRectangle = new PIXI.Rectangle(0,0,0,0); + PIXI.visibleCount = 0; \ No newline at end of file diff --git a/src/pixi/display/DisplayObjectContainer.js b/src/pixi/display/DisplayObjectContainer.js index 9f32a51..de8d0ab 100644 --- a/src/pixi/display/DisplayObjectContainer.js +++ b/src/pixi/display/DisplayObjectContainer.js @@ -37,12 +37,11 @@ */ PIXI.DisplayObjectContainer.prototype.addChild = function(child) { - if(child.parent !== undefined) + if(child.parent) { - //// COULD BE THIS??? child.parent.removeChild(child); - // return; + // return; } child.parent = this; @@ -343,3 +342,46 @@ this.children[i].updateTransform(); } }; + +PIXI.DisplayObjectContainer.prototype.getBounds = function() +{ + if(this.children.length === 0)return PIXI.EmptyRectangle; + + var minX = Infinity; + var minY = Infinity; + + var maxX = -Infinity; + var maxY = -Infinity; + + var childBounds; + var childMaxX; + var childMaxY; + + for(var i=0,j=this.children.length; i childMaxX ? maxX : childMaxX; + maxY = maxY > childMaxY ? maxY : childMaxY; + } + + var bounds = this._bounds; + + bounds.x = minX; + bounds.y = minY; + bounds.width = maxX - minX; + bounds.height = maxY - minY; + + return bounds; +} + diff --git a/src/pixi/display/Sprite.js b/src/pixi/display/Sprite.js index 35f1db0..90664a5 100644 --- a/src/pixi/display/Sprite.js +++ b/src/pixi/display/Sprite.js @@ -160,6 +160,75 @@ this.updateFrame = true; }; +PIXI.Sprite.prototype.getBounds = function() +{ + var width = this.texture.frame.width; + var height = this.texture.frame.height; + + var w0 = width * (1-this.anchor.x); + var w1 = width * -this.anchor.x; + + var h0 = height * (1-this.anchor.y); + var h1 = height * -this.anchor.y; + + var worldTransform = this.worldTransform; + + var a = worldTransform[0]; + var b = worldTransform[3]; + var c = worldTransform[1]; + var d = worldTransform[4]; + var tx = worldTransform[2]; + var ty = worldTransform[5]; + + var x1 = a * w1 + c * h1 + tx; + var y1 = d * h1 + b * w1 + ty; + + var x2 = a * w0 + c * h1 + tx; + var y2 = d * h1 + b * w0 + ty; + + var x3 = a * w0 + c * h0 + tx; + var y3 = d * h0 + b * w0 + ty; + + var x4 = a * w1 + c * h0 + tx; + var y4 = d * h0 + b * w1 + ty; + + var maxX = -Infinity; + var maxY = -Infinity; + + var minX = Infinity; + var minY = Infinity; + + minX = x1 < minX ? x1 : minX; + minX = x2 < minX ? x2 : minX; + minX = x3 < minX ? x3 : minX; + minX = x4 < minX ? x4 : minX; + + minY = y1 < minY ? y1 : minY; + minY = y2 < minY ? y2 : minY; + minY = y3 < minY ? y3 : minY; + minY = y4 < minY ? y4 : minY; + + maxX = x1 > maxX ? x1 : maxX; + maxX = x2 > maxX ? x2 : maxX; + maxX = x3 > maxX ? x3 : maxX; + maxX = x4 > maxX ? x4 : maxX; + + maxY = y1 > maxY ? y1 : maxY; + maxY = y2 > maxY ? y2 : maxY; + maxY = y3 > maxY ? y3 : maxY; + maxY = y4 > maxY ? y4 : maxY; + + var bounds = this._bounds; + + bounds.x = minX; + bounds.width = maxX - minX; + + bounds.y = minY; + bounds.height = maxY - minY; + + return bounds; +} + // some helper functions.. /** diff --git a/src/pixi/display/DisplayObject.js b/src/pixi/display/DisplayObject.js index 53cce04..b7f4347 100644 --- a/src/pixi/display/DisplayObject.js +++ b/src/pixi/display/DisplayObject.js @@ -169,6 +169,14 @@ this.filterArea = new PIXI.Rectangle(0,0,1,1); + + /** + * + * + * + */ + this._bounds = new PIXI.Rectangle(0, 0, 1, 1); + /* * MOUSE Callbacks */ @@ -567,4 +575,11 @@ this.vcount = PIXI.visibleCount; }; +PIXI.DisplayObject.prototype.getBounds = function() +{ + return PIXI.EmptyRectangle; +} + +PIXI.EmptyRectangle = new PIXI.Rectangle(0,0,0,0); + PIXI.visibleCount = 0; \ No newline at end of file diff --git a/src/pixi/display/DisplayObjectContainer.js b/src/pixi/display/DisplayObjectContainer.js index 9f32a51..de8d0ab 100644 --- a/src/pixi/display/DisplayObjectContainer.js +++ b/src/pixi/display/DisplayObjectContainer.js @@ -37,12 +37,11 @@ */ PIXI.DisplayObjectContainer.prototype.addChild = function(child) { - if(child.parent !== undefined) + if(child.parent) { - //// COULD BE THIS??? child.parent.removeChild(child); - // return; + // return; } child.parent = this; @@ -343,3 +342,46 @@ this.children[i].updateTransform(); } }; + +PIXI.DisplayObjectContainer.prototype.getBounds = function() +{ + if(this.children.length === 0)return PIXI.EmptyRectangle; + + var minX = Infinity; + var minY = Infinity; + + var maxX = -Infinity; + var maxY = -Infinity; + + var childBounds; + var childMaxX; + var childMaxY; + + for(var i=0,j=this.children.length; i childMaxX ? maxX : childMaxX; + maxY = maxY > childMaxY ? maxY : childMaxY; + } + + var bounds = this._bounds; + + bounds.x = minX; + bounds.y = minY; + bounds.width = maxX - minX; + bounds.height = maxY - minY; + + return bounds; +} + diff --git a/src/pixi/display/Sprite.js b/src/pixi/display/Sprite.js index 35f1db0..90664a5 100644 --- a/src/pixi/display/Sprite.js +++ b/src/pixi/display/Sprite.js @@ -160,6 +160,75 @@ this.updateFrame = true; }; +PIXI.Sprite.prototype.getBounds = function() +{ + var width = this.texture.frame.width; + var height = this.texture.frame.height; + + var w0 = width * (1-this.anchor.x); + var w1 = width * -this.anchor.x; + + var h0 = height * (1-this.anchor.y); + var h1 = height * -this.anchor.y; + + var worldTransform = this.worldTransform; + + var a = worldTransform[0]; + var b = worldTransform[3]; + var c = worldTransform[1]; + var d = worldTransform[4]; + var tx = worldTransform[2]; + var ty = worldTransform[5]; + + var x1 = a * w1 + c * h1 + tx; + var y1 = d * h1 + b * w1 + ty; + + var x2 = a * w0 + c * h1 + tx; + var y2 = d * h1 + b * w0 + ty; + + var x3 = a * w0 + c * h0 + tx; + var y3 = d * h0 + b * w0 + ty; + + var x4 = a * w1 + c * h0 + tx; + var y4 = d * h0 + b * w1 + ty; + + var maxX = -Infinity; + var maxY = -Infinity; + + var minX = Infinity; + var minY = Infinity; + + minX = x1 < minX ? x1 : minX; + minX = x2 < minX ? x2 : minX; + minX = x3 < minX ? x3 : minX; + minX = x4 < minX ? x4 : minX; + + minY = y1 < minY ? y1 : minY; + minY = y2 < minY ? y2 : minY; + minY = y3 < minY ? y3 : minY; + minY = y4 < minY ? y4 : minY; + + maxX = x1 > maxX ? x1 : maxX; + maxX = x2 > maxX ? x2 : maxX; + maxX = x3 > maxX ? x3 : maxX; + maxX = x4 > maxX ? x4 : maxX; + + maxY = y1 > maxY ? y1 : maxY; + maxY = y2 > maxY ? y2 : maxY; + maxY = y3 > maxY ? y3 : maxY; + maxY = y4 > maxY ? y4 : maxY; + + var bounds = this._bounds; + + bounds.x = minX; + bounds.width = maxX - minX; + + bounds.y = minY; + bounds.height = maxY - minY; + + return bounds; +} + // some helper functions.. /** diff --git a/src/pixi/primitives/Graphics.js b/src/pixi/primitives/Graphics.js index 92dee1e..49004af 100644 --- a/src/pixi/primitives/Graphics.js +++ b/src/pixi/primitives/Graphics.js @@ -226,70 +226,138 @@ }; -PIXI.Graphics.prototype.updateFilterBounds = function() +PIXI.Graphics.prototype.getBounds = function() { - if(!this.bounds) - { - var minX = Infinity; - var maxX = -Infinity; + if(!this.bounds)this.updateBounds(); - var minY = Infinity; - var maxY = -Infinity; + var w0 = this.bounds.x; + var w1 = this.bounds.y; - var points, x, y; + var h0 = this.bounds.width + this.bounds.x; + var h1 = this.bounds.height + this.bounds.y; - for (var i = 0; i < this.graphicsData.length; i++) { - var data = this.graphicsData[i]; - var type = data.type; - var lineWidth = data.lineWidth; + var worldTransform = this.worldTransform; - points = data.points; + var a = worldTransform[0]; + var b = worldTransform[3]; + var c = worldTransform[1]; + var d = worldTransform[4]; + var tx = worldTransform[2]; + var ty = worldTransform[5]; - if(type === PIXI.Graphics.RECT) + var x1 = a * w1 + c * h1 + tx; + var y1 = d * h1 + b * w1 + ty; + + var x2 = a * w0 + c * h1 + tx; + var y2 = d * h1 + b * w0 + ty; + + var x3 = a * w0 + c * h0 + tx; + var y3 = d * h0 + b * w0 + ty; + + var x4 = a * w1 + c * h0 + tx; + var y4 = d * h0 + b * w1 + ty; + + var maxX = -Infinity; + var maxY = -Infinity; + + var minX = Infinity; + var minY = Infinity; + + minX = x1 < minX ? x1 : minX; + minX = x2 < minX ? x2 : minX; + minX = x3 < minX ? x3 : minX; + minX = x4 < minX ? x4 : minX; + + minY = y1 < minY ? y1 : minY; + minY = y2 < minY ? y2 : minY; + minY = y3 < minY ? y3 : minY; + minY = y4 < minY ? y4 : minY; + + maxX = x1 > maxX ? x1 : maxX; + maxX = x2 > maxX ? x2 : maxX; + maxX = x3 > maxX ? x3 : maxX; + maxX = x4 > maxX ? x4 : maxX; + + maxY = y1 > maxY ? y1 : maxY; + maxY = y2 > maxY ? y2 : maxY; + maxY = y3 > maxY ? y3 : maxY; + maxY = y4 > maxY ? y4 : maxY; + + var bounds = this._bounds; + + bounds.x = minX; + bounds.width = maxX - minX; + + bounds.y = minY; + bounds.height = maxY - minY; + + return bounds; +} + +PIXI.Graphics.prototype.updateBounds = function() +{ + + + var minX = Infinity; + var maxX = -Infinity; + + var minY = Infinity; + var maxY = -Infinity; + + var points, x, y; + + for (var i = 0; i < this.graphicsData.length; i++) { + var data = this.graphicsData[i]; + var type = data.type; + var lineWidth = data.lineWidth; + + points = data.points; + + if(type === PIXI.Graphics.RECT) + { + x = points.x - lineWidth/2; + y = points.y - lineWidth/2; + var width = points.width + lineWidth; + var height = points.height + lineWidth; + + minX = x < minX ? x : minX; + maxX = x + width > maxX ? x + width : maxX; + + minY = y < minY ? x : minY; + maxY = y + height > maxY ? y + height : maxY; + } + else if(type === PIXI.Graphics.CIRC || type === PIXI.Graphics.ELIP) + { + x = points.x; + y = points.y; + var radius = points.radius + lineWidth/2; + + minX = x - radius < minX ? x - radius : minX; + maxX = x + radius > maxX ? x + radius : maxX; + + minY = y - radius < minY ? y - radius : minY; + maxY = y + radius > maxY ? y + radius : maxY; + } + else + { + // POLY + for (var j = 0; j < points.length; j+=2) { - x = points.x - lineWidth/2; - y = points.y - lineWidth/2; - var width = points.width + lineWidth; - var height = points.height + lineWidth; - minX = x < minX ? x : minX; - maxX = x + width > maxX ? x + width : maxX; + x = points[j]; + y = points[j+1]; - minY = y < minY ? x : minY; - maxY = y + height > maxY ? y + height : maxY; - } - else if(type === PIXI.Graphics.CIRC || type === PIXI.Graphics.ELIP) - { - x = points.x; - y = points.y; - var radius = points.radius + lineWidth/2; + minX = x-lineWidth < minX ? x-lineWidth : minX; + maxX = x+lineWidth > maxX ? x+lineWidth : maxX; - minX = x - radius < minX ? x - radius : minX; - maxX = x + radius > maxX ? x + radius : maxX; - - minY = y - radius < minY ? y - radius : minY; - maxY = y + radius > maxY ? y + radius : maxY; - } - else - { - // POLY - for (var j = 0; j < points.length; j+=2) - { - - x = points[j]; - y = points[j+1]; - - minX = x-lineWidth < minX ? x-lineWidth : minX; - maxX = x+lineWidth > maxX ? x+lineWidth : maxX; - - minY = y-lineWidth < minY ? y-lineWidth : minY; - maxY = y+lineWidth > maxY ? y+lineWidth : maxY; - } + minY = y-lineWidth < minY ? y-lineWidth : minY; + maxY = y+lineWidth > maxY ? y+lineWidth : maxY; } } - - this.bounds = new PIXI.Rectangle(minX, minY, maxX - minX, maxY - minY); } + + this.bounds = new PIXI.Rectangle(minX, minY, maxX - minX, maxY - minY); + // console.log(this.bounds); }; diff --git a/src/pixi/display/DisplayObject.js b/src/pixi/display/DisplayObject.js index 53cce04..b7f4347 100644 --- a/src/pixi/display/DisplayObject.js +++ b/src/pixi/display/DisplayObject.js @@ -169,6 +169,14 @@ this.filterArea = new PIXI.Rectangle(0,0,1,1); + + /** + * + * + * + */ + this._bounds = new PIXI.Rectangle(0, 0, 1, 1); + /* * MOUSE Callbacks */ @@ -567,4 +575,11 @@ this.vcount = PIXI.visibleCount; }; +PIXI.DisplayObject.prototype.getBounds = function() +{ + return PIXI.EmptyRectangle; +} + +PIXI.EmptyRectangle = new PIXI.Rectangle(0,0,0,0); + PIXI.visibleCount = 0; \ No newline at end of file diff --git a/src/pixi/display/DisplayObjectContainer.js b/src/pixi/display/DisplayObjectContainer.js index 9f32a51..de8d0ab 100644 --- a/src/pixi/display/DisplayObjectContainer.js +++ b/src/pixi/display/DisplayObjectContainer.js @@ -37,12 +37,11 @@ */ PIXI.DisplayObjectContainer.prototype.addChild = function(child) { - if(child.parent !== undefined) + if(child.parent) { - //// COULD BE THIS??? child.parent.removeChild(child); - // return; + // return; } child.parent = this; @@ -343,3 +342,46 @@ this.children[i].updateTransform(); } }; + +PIXI.DisplayObjectContainer.prototype.getBounds = function() +{ + if(this.children.length === 0)return PIXI.EmptyRectangle; + + var minX = Infinity; + var minY = Infinity; + + var maxX = -Infinity; + var maxY = -Infinity; + + var childBounds; + var childMaxX; + var childMaxY; + + for(var i=0,j=this.children.length; i childMaxX ? maxX : childMaxX; + maxY = maxY > childMaxY ? maxY : childMaxY; + } + + var bounds = this._bounds; + + bounds.x = minX; + bounds.y = minY; + bounds.width = maxX - minX; + bounds.height = maxY - minY; + + return bounds; +} + diff --git a/src/pixi/display/Sprite.js b/src/pixi/display/Sprite.js index 35f1db0..90664a5 100644 --- a/src/pixi/display/Sprite.js +++ b/src/pixi/display/Sprite.js @@ -160,6 +160,75 @@ this.updateFrame = true; }; +PIXI.Sprite.prototype.getBounds = function() +{ + var width = this.texture.frame.width; + var height = this.texture.frame.height; + + var w0 = width * (1-this.anchor.x); + var w1 = width * -this.anchor.x; + + var h0 = height * (1-this.anchor.y); + var h1 = height * -this.anchor.y; + + var worldTransform = this.worldTransform; + + var a = worldTransform[0]; + var b = worldTransform[3]; + var c = worldTransform[1]; + var d = worldTransform[4]; + var tx = worldTransform[2]; + var ty = worldTransform[5]; + + var x1 = a * w1 + c * h1 + tx; + var y1 = d * h1 + b * w1 + ty; + + var x2 = a * w0 + c * h1 + tx; + var y2 = d * h1 + b * w0 + ty; + + var x3 = a * w0 + c * h0 + tx; + var y3 = d * h0 + b * w0 + ty; + + var x4 = a * w1 + c * h0 + tx; + var y4 = d * h0 + b * w1 + ty; + + var maxX = -Infinity; + var maxY = -Infinity; + + var minX = Infinity; + var minY = Infinity; + + minX = x1 < minX ? x1 : minX; + minX = x2 < minX ? x2 : minX; + minX = x3 < minX ? x3 : minX; + minX = x4 < minX ? x4 : minX; + + minY = y1 < minY ? y1 : minY; + minY = y2 < minY ? y2 : minY; + minY = y3 < minY ? y3 : minY; + minY = y4 < minY ? y4 : minY; + + maxX = x1 > maxX ? x1 : maxX; + maxX = x2 > maxX ? x2 : maxX; + maxX = x3 > maxX ? x3 : maxX; + maxX = x4 > maxX ? x4 : maxX; + + maxY = y1 > maxY ? y1 : maxY; + maxY = y2 > maxY ? y2 : maxY; + maxY = y3 > maxY ? y3 : maxY; + maxY = y4 > maxY ? y4 : maxY; + + var bounds = this._bounds; + + bounds.x = minX; + bounds.width = maxX - minX; + + bounds.y = minY; + bounds.height = maxY - minY; + + return bounds; +} + // some helper functions.. /** diff --git a/src/pixi/primitives/Graphics.js b/src/pixi/primitives/Graphics.js index 92dee1e..49004af 100644 --- a/src/pixi/primitives/Graphics.js +++ b/src/pixi/primitives/Graphics.js @@ -226,70 +226,138 @@ }; -PIXI.Graphics.prototype.updateFilterBounds = function() +PIXI.Graphics.prototype.getBounds = function() { - if(!this.bounds) - { - var minX = Infinity; - var maxX = -Infinity; + if(!this.bounds)this.updateBounds(); - var minY = Infinity; - var maxY = -Infinity; + var w0 = this.bounds.x; + var w1 = this.bounds.y; - var points, x, y; + var h0 = this.bounds.width + this.bounds.x; + var h1 = this.bounds.height + this.bounds.y; - for (var i = 0; i < this.graphicsData.length; i++) { - var data = this.graphicsData[i]; - var type = data.type; - var lineWidth = data.lineWidth; + var worldTransform = this.worldTransform; - points = data.points; + var a = worldTransform[0]; + var b = worldTransform[3]; + var c = worldTransform[1]; + var d = worldTransform[4]; + var tx = worldTransform[2]; + var ty = worldTransform[5]; - if(type === PIXI.Graphics.RECT) + var x1 = a * w1 + c * h1 + tx; + var y1 = d * h1 + b * w1 + ty; + + var x2 = a * w0 + c * h1 + tx; + var y2 = d * h1 + b * w0 + ty; + + var x3 = a * w0 + c * h0 + tx; + var y3 = d * h0 + b * w0 + ty; + + var x4 = a * w1 + c * h0 + tx; + var y4 = d * h0 + b * w1 + ty; + + var maxX = -Infinity; + var maxY = -Infinity; + + var minX = Infinity; + var minY = Infinity; + + minX = x1 < minX ? x1 : minX; + minX = x2 < minX ? x2 : minX; + minX = x3 < minX ? x3 : minX; + minX = x4 < minX ? x4 : minX; + + minY = y1 < minY ? y1 : minY; + minY = y2 < minY ? y2 : minY; + minY = y3 < minY ? y3 : minY; + minY = y4 < minY ? y4 : minY; + + maxX = x1 > maxX ? x1 : maxX; + maxX = x2 > maxX ? x2 : maxX; + maxX = x3 > maxX ? x3 : maxX; + maxX = x4 > maxX ? x4 : maxX; + + maxY = y1 > maxY ? y1 : maxY; + maxY = y2 > maxY ? y2 : maxY; + maxY = y3 > maxY ? y3 : maxY; + maxY = y4 > maxY ? y4 : maxY; + + var bounds = this._bounds; + + bounds.x = minX; + bounds.width = maxX - minX; + + bounds.y = minY; + bounds.height = maxY - minY; + + return bounds; +} + +PIXI.Graphics.prototype.updateBounds = function() +{ + + + var minX = Infinity; + var maxX = -Infinity; + + var minY = Infinity; + var maxY = -Infinity; + + var points, x, y; + + for (var i = 0; i < this.graphicsData.length; i++) { + var data = this.graphicsData[i]; + var type = data.type; + var lineWidth = data.lineWidth; + + points = data.points; + + if(type === PIXI.Graphics.RECT) + { + x = points.x - lineWidth/2; + y = points.y - lineWidth/2; + var width = points.width + lineWidth; + var height = points.height + lineWidth; + + minX = x < minX ? x : minX; + maxX = x + width > maxX ? x + width : maxX; + + minY = y < minY ? x : minY; + maxY = y + height > maxY ? y + height : maxY; + } + else if(type === PIXI.Graphics.CIRC || type === PIXI.Graphics.ELIP) + { + x = points.x; + y = points.y; + var radius = points.radius + lineWidth/2; + + minX = x - radius < minX ? x - radius : minX; + maxX = x + radius > maxX ? x + radius : maxX; + + minY = y - radius < minY ? y - radius : minY; + maxY = y + radius > maxY ? y + radius : maxY; + } + else + { + // POLY + for (var j = 0; j < points.length; j+=2) { - x = points.x - lineWidth/2; - y = points.y - lineWidth/2; - var width = points.width + lineWidth; - var height = points.height + lineWidth; - minX = x < minX ? x : minX; - maxX = x + width > maxX ? x + width : maxX; + x = points[j]; + y = points[j+1]; - minY = y < minY ? x : minY; - maxY = y + height > maxY ? y + height : maxY; - } - else if(type === PIXI.Graphics.CIRC || type === PIXI.Graphics.ELIP) - { - x = points.x; - y = points.y; - var radius = points.radius + lineWidth/2; + minX = x-lineWidth < minX ? x-lineWidth : minX; + maxX = x+lineWidth > maxX ? x+lineWidth : maxX; - minX = x - radius < minX ? x - radius : minX; - maxX = x + radius > maxX ? x + radius : maxX; - - minY = y - radius < minY ? y - radius : minY; - maxY = y + radius > maxY ? y + radius : maxY; - } - else - { - // POLY - for (var j = 0; j < points.length; j+=2) - { - - x = points[j]; - y = points[j+1]; - - minX = x-lineWidth < minX ? x-lineWidth : minX; - maxX = x+lineWidth > maxX ? x+lineWidth : maxX; - - minY = y-lineWidth < minY ? y-lineWidth : minY; - maxY = y+lineWidth > maxY ? y+lineWidth : maxY; - } + minY = y-lineWidth < minY ? y-lineWidth : minY; + maxY = y+lineWidth > maxY ? y+lineWidth : maxY; } } - - this.bounds = new PIXI.Rectangle(minX, minY, maxX - minX, maxY - minY); } + + this.bounds = new PIXI.Rectangle(minX, minY, maxX - minX, maxY - minY); + // console.log(this.bounds); }; diff --git a/src/pixi/renderers/webgl/WebGLFilterManager.js b/src/pixi/renderers/webgl/WebGLFilterManager.js index 2dd4b75..098b1c2 100644 --- a/src/pixi/renderers/webgl/WebGLFilterManager.js +++ b/src/pixi/renderers/webgl/WebGLFilterManager.js @@ -52,6 +52,8 @@ this.getBounds(filterBlock.target); + filterBlock.target.filterArea = filterBlock.target.getBounds(); + console.log(filterBlock.target.filterArea); // addpadding? //displayObject.filterArea.x