Newer
Older
pixi.js / src / renderers / canvas / utils / CanvasMaskManager.js
@Chad Engler Chad Engler on 27 Dec 2014 1 KB refactor utils
var CanvasGraphics = require('../CanvasGraphics');

/**
 * A set of functions used to handle masking.
 *
 * @class
 * @namespace 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 renderSession {object} The renderSession whose context will be used for this mask manager.
 */
CanvasMaskManager.prototype.pushMask = function (maskData, renderSession) {
    renderSession.context.save();

    var cacheAlpha = maskData.alpha;
    var transform = maskData.worldTransform;
    var resolution = renderSession.resolution;

    renderSession.context.setTransform(
        transform.a * resolution,
        transform.b * resolution,
        transform.c * resolution,
        transform.d * resolution,
        transform.tx * resolution,
        transform.ty * resolution
    );

    CanvasGraphics.renderGraphicsMask(maskData, renderSession.context);

    renderSession.context.clip();

    maskData.worldAlpha = cacheAlpha;
};

/**
 * Restores the current drawing context to the state it was before the mask was applied.
 *
 * @param renderSession {object} The renderSession whose context will be used for this mask manager.
 */
CanvasMaskManager.prototype.popMask = function (renderSession) {
    renderSession.context.restore();
};