# Source: mask/BoxMask.js

    "use strict";

    import {Mask} from "./Mask.js";
    import {Vector2} from "../math/Vector2.js";
    import {Box2} from "../math/Box2.js";

    /**
     * Box mask can be used to clear a box mask region.
     *
     * It will limit the drwaing region to this box.
     *
     * @class
     * @extends {Mask}
     */
    function BoxMask()
    {
    	Mask.call(this);

    	/**
    	 * Box object containing the size of the object.
    	 */
    	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.
    	 */
    	this.invert = false;
    }

    BoxMask.prototype = Object.create(Mask.prototype);

    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};