Clean up Group#draw and save/restore context state when drawing group with opacity.

This commit is contained in:
Jonathan Puckey 2011-02-24 01:33:36 +01:00
parent dc51384a1a
commit c929bacde8

View file

@ -17,10 +17,10 @@ Group = Item.extend({
// If the group has an opacity of less then 1, draw its children on a
// temporary canvas, and then draw that canvas onto ctx afterwards
// with globalAlpha set.
var tempCanvas, originalCtx;
if (this.opacity < 1) {
var originalCtx = ctx;
var size = this.document.size;
var tempCanvas = CanvasProvider.getCanvas(size.width, size.height);
tempCanvas = CanvasProvider.getCanvas(this.document.size);
ctx = tempCanvas.getContext('2d');
}
for (var i = 0, l = this.children.length; i < l; i++) {
@ -29,8 +29,10 @@ Group = Item.extend({
ctx.clip();
}
if (tempCanvas) {
originalCtx.save();
originalCtx.globalAlpha = this.opacity;
originalCtx.drawImage(tempCanvas, 0, 0);
originalCtx.restore();
// Return the canvas, so it can be reused
CanvasProvider.returnCanvas(tempCanvas);
}