const CanvasGraphics = require('./CanvasGraphics');
/**
* A set of functions used to handle masking.
*
* @class
*/
class CanvasMaskManager {
constructor() {}
/**
* 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.
*/
pushMask(maskData, renderer) {
renderer.context.save();
let cacheAlpha = maskData.alpha;
let transform = maskData.worldTransform;
let 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.
*/
popMask(renderer) {
renderer.context.restore();
}
destroy() {}
}
module.exports = CanvasMaskManager;