import {Mask} from "./Mask.js"; import {Vector2} from "../../math/Vector2.js"; import {Box2} from "../../math/Box2.js"; import {Object2D} from "../../Object2D.js"; /** * Box mask can be used to clear a box mask region. * * It will limit the drawing region to this box. * * @class * @extends {Mask} */ function BoxMask() { Mask.call(this); /** * Box object containing the size of the object. * * @type {Box2} */ this.box = new Box2(new Vector2(-50, -35), new Vector2(50, 35)); /** * If inverted the mask considers the outside of the box instead of the inside. * * @type {boolean} */ this.invert = false; } BoxMask.prototype = Object.create(Mask.prototype); BoxMask.prototype.constructor = BoxMask; BoxMask.prototype.type = "BoxMask"; Object2D.register(BoxMask, "BoxMask"); BoxMask.prototype.isInside = function(point) { return this.box.containsPoint(point); }; BoxMask.prototype.clip = function(context, viewport, canvas) { context.beginPath(); var width = this.box.max.x - this.box.min.x; if(this.invert) { context.rect(this.box.min.x - 1e4, -5e3, 1e4, 1e4); context.rect(this.box.max.x, -5e3, 1e4, 1e4); context.rect(this.box.min.x, this.box.min.y - 1e4, width, 1e4); context.rect(this.box.min.x, this.box.max.y, width, 1e4); } else { var height = this.box.max.y - this.box.min.y; context.fillRect(this.box.min.x, this.box.min.y, width, height); } context.clip(); }; export {BoxMask};