var CanvasGraphics = require('./CanvasGraphics');
/**
* A set of functions used to handle masking.
*
* @class
* @memberof PIXI
*/
function CanvasMaskManager()
{}
CanvasMaskManager.prototype.constructor = CanvasMaskManager;
module.exports = CanvasMaskManager;
/**
* This method adds it to the current stack of masks.
*
* @param maskData {object} the maskData that will be pushed
* @param renderer {PIXI.WebGLRenderer|PIXI.CanvasRenderer} The renderer context to use.
*/
CanvasMaskManager.prototype.pushMask = function (maskData, renderer)
{
renderer.context.save();
var cacheAlpha = maskData.alpha;
var transform = maskData.worldTransform;
var resolution = renderer.resolution;
renderer.context.setTransform(
transform.a * resolution,
transform.b * resolution,
transform.c * resolution,
transform.d * resolution,
transform.tx * resolution,
transform.ty * resolution
);
//TODO suport sprite alpha masks??
//lots of effort required. If demand is great enough..
if(!maskData.texture)
{
CanvasGraphics.renderGraphicsMask(maskData, renderer.context);
renderer.context.clip();
}
maskData.worldAlpha = cacheAlpha;
};
/**
* Restores the current drawing context to the state it was before the mask was applied.
*
* @param renderer {PIXI.WebGLRenderer|PIXI.CanvasRenderer} The renderer context to use.
*/
CanvasMaskManager.prototype.popMask = function (renderer)
{
renderer.context.restore();
};
CanvasMaskManager.prototype.destroy = function () {};