(function () { var ns = $.namespace('pskl.utils'); ns.FrameUtils = { merge : function (frames) { var merged = null; if (frames.length) { merged = frames[0].clone(); var w = merged.getWidth(), h = merged.getHeight(); for (var i = 1 ; i < frames.length ; i++) { pskl.utils.FrameUtils.mergeFrames_(merged, frames[i]); } } return merged; }, mergeFrames_ : function (frameA, frameB) { frameB.forEachPixel(function (p, col, row) { if (p != Constants.TRANSPARENT_COLOR) { frameA.setPixel(col, row, p); } }); }, /** * Create a pskl.model.Frame from an Image object. * Transparent pixels will either be converted to completely opaque or completely transparent pixels. * @param {Image} image source image * @return {pskl.model.Frame} corresponding frame */ createFromImage : function (image) { var w = image.width, h = image.height; var canvas = pskl.CanvasUtils.createCanvas(w, h); var context = canvas.getContext('2d'); context.drawImage(image, 0,0,w,h,0,0,w,h); var imgData = context.getImageData(0,0,w,h).data; // Draw the zoomed-up pixels to a different canvas context var frame = []; for (var x=0;x