...
var blurFilter = new BoxBlurFilter(32, 2, 2);
var margins = blurFilter.getBounds();
bmp = bmp.clone();
bmp.filters = [blurFilter];
// filters are only displayed when the display object is cached
// later, you can call updateCache() to update changes to your filters
bmp.cache(margins.x,margins.y,img.width+margins.width,img.height+margins.height);
bmp.x += bmp.x+img.width;
stage.addChild(bmp);
...
should be var blurcanvas = boxBlurFilter(originalcanvas,32,2,2);
and then, if we want to see it on the page (i.e. instead of the original canvas) $(originalcanvas).replaceWith(blurcanvas) //or any other jQuery mumbo jumbo
canvas are cheap. we must start wasting them.from my point of view: most of the canvas (effect) libs smell like premature optimization to me. could be wrong, though.
And couldn't you create the kind of library you wanted by simply making a wrapper that called did something like
function X(canvas, ...) { var C = canvas.clone(); oldX(C, ...); return canvas }
You can't really do the opposite and get the performance advantages.var s:Sprite = new Sprite();
s.graphics.beginFill("#000000",1);
s.graphics.drawRect(0,0,100,100);
root.stage.addChild(s);
s.filters = [new BlurFilter(4), new DropShadowFilter(2,2,4,"#000000",.8)]
And that's it. It's now automatically drawn to a hidden canvas, which becomes the only item on the Sprite's draw list, retaining the position and transform properties, parent and event hierarchy of the original Sprite. If you modify the Sprite later, re-filtering and re-caching happens automatically. And if you remove the filters, the original vector draw list is restored and the hidden canvas that fed the filtered version is emptied and deleted.
the effects math is fine and all that, but...
the big mistake they are all doing is to work directly on the canvas instead of just taking a canvas as input and deliver another canvas as output (optional async to a callback).
said that, i'm currently working on a solution, a simple functional canvas lib, one canvas goes in, another canvas comes out. no side effects.
update: if somebody is interested, it's shared here https://github.com/franzenzenhofer/canwaste/blob/master/main... ... but it's explorative programming (meaning: i coded it drunk) so don't expect to much at this point.