'use strict'; describe('getBounds', function () { it('should register correct width/height with a LOADED Sprite', function () { const parent = new PIXI.Container(); const texture = PIXI.RenderTexture.create(10, 10); const sprite = new PIXI.Sprite(texture); parent.addChild(sprite); let bounds = sprite.getBounds(); expect(bounds.x).to.equal(0); expect(bounds.y).to.equal(0); expect(bounds.width).to.equal(10); expect(bounds.height).to.equal(10); sprite.position.x = 20; sprite.position.y = 20; sprite.scale.x = 2; sprite.scale.y = 2; bounds = sprite.getBounds(); expect(bounds.x).to.equal(20); expect(bounds.y).to.equal(20); expect(bounds.width).to.equal(20); expect(bounds.height).to.equal(20); bounds = sprite.getBounds(true); expect(bounds.x).to.equal(20); expect(bounds.y).to.equal(20); expect(bounds.width).to.equal(20); expect(bounds.height).to.equal(20); }); it('should register correct width/height with Graphics', function () { const parent = new PIXI.Container(); const graphics = new PIXI.Graphics(); let bounds = graphics.getBounds(); expect(bounds.x).to.equal(0); expect(bounds.y).to.equal(0); expect(bounds.width).to.equal(0); expect(bounds.height).to.equal(0); graphics.beginFill(0xFF0000).drawCircle(0, 0, 10, 10); parent.addChild(graphics); bounds = graphics.getBounds(); expect(bounds.x).to.equal(-10); expect(bounds.y).to.equal(-10); expect(bounds.width).to.equal(20); expect(bounds.height).to.equal(20); graphics.position.x = 20; graphics.position.y = 20; graphics.scale.x = 2; graphics.scale.y = 2; bounds = graphics.getBounds(); expect(bounds.x).to.equal(0); expect(bounds.y).to.equal(0); expect(bounds.width).to.equal(40); expect(bounds.height).to.equal(40); bounds = graphics.getBounds(true); expect(bounds.x).to.equal(0); expect(bounds.y).to.equal(0); expect(bounds.width).to.equal(40); expect(bounds.height).to.equal(40); }); it('should register correct width/height with an empty Container', function () { const parent = new PIXI.Container(); const container = new PIXI.Container(); parent.addChild(container); let bounds = container.getBounds(); expect(bounds.x).to.equal(0); expect(bounds.y).to.equal(0); expect(bounds.width).to.equal(0); expect(bounds.height).to.equal(0); container.position.x = 20; container.position.y = 20; container.scale.x = 2; container.scale.y = 2; bounds = container.getBounds(); expect(bounds.x).to.equal(0); expect(bounds.y).to.equal(0); expect(bounds.width).to.equal(0); expect(bounds.height).to.equal(0); }); it('should register correct width/height with a Container', function () { const parent = new PIXI.Container(); const container = new PIXI.Container(); const graphics = new PIXI.Graphics().beginFill(0xFF0000).drawCircle(0, 0, 10, 10); const texture = PIXI.RenderTexture.create(10, 10); const sprite = new PIXI.Sprite(texture); container.addChild(sprite); container.addChild(graphics); parent.addChild(container); sprite.position.x = 30; sprite.position.y = 20; graphics.position.x = 100; graphics.position.y = 100; let bounds = container.getBounds(); expect(bounds.x).to.equal(30); expect(bounds.y).to.equal(20); expect(bounds.width).to.equal(80); expect(bounds.height).to.equal(90); container.rotation = 0.1; bounds = container.getBounds(); expect(bounds.x | 0).to.equal(26); expect(bounds.y | 0).to.equal(22); expect(bounds.width | 0).to.equal(73); expect(bounds.height | 0).to.equal(97); bounds = container.getBounds(true); expect(bounds.x | 0).to.equal(26); expect(bounds.y | 0).to.equal(22); expect(bounds.width | 0).to.equal(73); expect(bounds.height | 0).to.equal(97); }); it('should register correct width/height with an item that has already had its parent Container transformed', function () { const parent = new PIXI.Container(); const container = new PIXI.Container(); const graphics = new PIXI.Graphics().beginFill(0xFF0000).drawRect(0, 0, 10, 10); parent.addChild(container); container.addChild(graphics); container.position.x = 100; container.position.y = 100; let bounds = container.getBounds(); expect(bounds.x).to.equal(100); expect(bounds.y).to.equal(100); expect(bounds.width).to.equal(10); expect(bounds.height).to.equal(10); bounds = graphics.getBounds(true); expect(bounds.x).to.equal(100); expect(bounds.y).to.equal(100); expect(bounds.width).to.equal(10); expect(bounds.height).to.equal(10); }); it('should register correct width/height with a Mesh', function () { const parent = new PIXI.Container(); const texture = PIXI.RenderTexture.create(10, 10); const plane = new PIXI.mesh.Plane(texture); parent.addChild(plane); plane.position.x = 20; plane.position.y = 20; let bounds = plane.getBounds(); expect(bounds.x).to.equal(20); expect(bounds.y).to.equal(20); expect(bounds.width).to.equal(10); expect(bounds.height).to.equal(10); plane.scale.x = 2; plane.scale.y = 2; bounds = plane.getBounds(); expect(bounds.x).to.equal(20); expect(bounds.y).to.equal(20); expect(bounds.width).to.equal(20); expect(bounds.height).to.equal(20); }); it('should register correct width/height with an a DisplayObject is visible false', function () { const parent = new PIXI.Container(); const container = new PIXI.Container(); const graphics = new PIXI.Graphics().beginFill(0xFF0000).drawCircle(0, 0, 10, 10); const texture = PIXI.RenderTexture.create(10, 10); const sprite = new PIXI.Sprite(texture); container.addChild(sprite); container.addChild(graphics); parent.addChild(container); sprite.position.x = 30; sprite.position.y = 20; graphics.position.x = 100; graphics.position.y = 100; graphics.visible = false; let bounds = container.getBounds(); expect(bounds.x).to.equal(30); expect(bounds.y).to.equal(20); expect(bounds.width).to.equal(10); expect(bounds.height).to.equal(10); sprite.renderable = false; bounds = container.getBounds(); expect(bounds.x).to.equal(0); expect(bounds.y).to.equal(0); expect(bounds.width).to.equal(0); expect(bounds.height).to.equal(0); bounds = sprite.getBounds(); expect(bounds.x).to.equal(30); expect(bounds.y).to.equal(20); expect(bounds.width).to.equal(10); expect(bounds.height).to.equal(10); }); it('should register correct bounds of invisible Container', function () { const parent = new PIXI.Container(); const container = new PIXI.Container(); const texture = PIXI.RenderTexture.create(10, 10); const sprite = new PIXI.Sprite(texture); container.addChild(sprite); parent.addChild(container); sprite.position.set(30, 20); container.visible = false; container.position.set(100, 100); const bounds = container.getBounds(); expect(bounds.x).to.equal(130); expect(bounds.y).to.equal(120); expect(bounds.width).to.equal(10); expect(bounds.height).to.equal(10); }); it('should register correct width/height with Container masked child', function () { const parent = new PIXI.Container(); const container = new PIXI.Container(); const graphics = new PIXI.Graphics().beginFill(0xFF0000).drawRect(0, 0, 10, 10); const texture = PIXI.RenderTexture.create(10, 10); const sprite = new PIXI.Sprite(texture); container.addChild(sprite); container.addChild(graphics); sprite.mask = graphics; parent.addChild(container); sprite.position.x = 30; sprite.position.y = 20; graphics.position.x = 32; graphics.position.y = 23; let bounds = graphics.getBounds(); expect(bounds.x).to.equal(32); expect(bounds.y).to.equal(23); expect(bounds.width).to.equal(10); expect(bounds.height).to.equal(10); bounds = container.getBounds(); expect(bounds.x).to.equal(32); expect(bounds.y).to.equal(23); expect(bounds.width).to.equal(8); expect(bounds.height).to.equal(7); }); it('should register correct width/height with an a DisplayObject parent has moved', function () { const parent = new PIXI.Container(); const container = new PIXI.Container(); const graphics = new PIXI.Graphics().beginFill(0xFF0000).drawCircle(0, 0, 10); container.addChild(graphics); parent.addChild(container); // graphics.position.x = 100; // graphics.position.y = 100; container.position.x -= 100; container.position.y -= 100; const bounds = graphics.getBounds(); expect(bounds.x).to.equal(-110); expect(bounds.y).to.equal(-110); expect(bounds.width).to.equal(20); expect(bounds.height).to.equal(20); }); it('should register correct width/height with a Text Object', function () { const parent = new PIXI.Container(); const container = new PIXI.Container(); const text = new PIXI.Text('i am some text'); container.addChild(text); parent.addChild(container); let bounds = text.getBounds(); const bx = bounds.width; expect(bounds.x).to.equal(0); expect(bounds.y).to.equal(0); expect(bounds.width).to.be.greaterThan(0); expect(bounds.height).to.greaterThan(0); text.text = 'hello!'; bounds = text.getBounds(); // this variable seems to be different on different devices. a font thing? expect(bounds.width).to.not.equal(bx); }); it('should return a different rectangle if getting local bounds after global bounds ', function () { const parent = new PIXI.Container(); const texture = PIXI.RenderTexture.create(10, 10); const sprite = new PIXI.Sprite(texture); sprite.position.x = 20; sprite.position.y = 20; sprite.scale.x = 2; sprite.scale.y = 2; parent.addChild(sprite); const bounds = sprite.getBounds(); expect(bounds.x).to.equal(20); expect(bounds.y).to.equal(20); expect(bounds.width).to.equal(20); expect(bounds.height).to.equal(20); const localBounds = sprite.getLocalBounds(); expect(localBounds.x).to.equal(0); expect(localBounds.y).to.equal(0); expect(localBounds.width).to.equal(10); expect(localBounds.height).to.equal(10); }); it('should ensure bounds respect the trim of a texture ', function () { const parent = new PIXI.Container(); const baseTexture = new PIXI.BaseRenderTexture(100, 100); const orig = new PIXI.Rectangle(0, 0, 100, 50); const frame = new PIXI.Rectangle(2, 2, 50, 50); const trim = new PIXI.Rectangle(25, 0, 50, 50); const trimmedTexture = new PIXI.Texture(baseTexture, frame, orig, trim); const sprite = new PIXI.Sprite(trimmedTexture); sprite.position.x = 20; sprite.position.y = 20; parent.addChild(sprite); const bounds = sprite.getBounds(); expect(bounds.x).to.equal(20); expect(bounds.y).to.equal(20); expect(bounds.width).to.equal(100); expect(bounds.height).to.equal(50); }); });