// boolean operations with alpha masks // info@toxi.co.uk BImage img; BImage[] masks; int numMasks=5; void setup() { size(500,200); img=loadImage("test.jpg",false); masks=new BImage[numMasks]; // load 2 preset alpha channels: // a circle and square, each defining its area @ 50% alpha masks[0]=loadImage("circle_50perc.gif",false); masks[1]=loadImage("square_50perc.gif",false); // build combined masks // mask3 = mask1+mask2; masks[2]=masks[0].copy(); masks[2].blend(masks[1],0,0,masks[1].width,masks[1].height,0,0,masks[1].width,masks[1].height,ADD); // mask4 = mask1 - mask2 masks[3]=masks[0].copy(); masks[3].blend(masks[1],0,0,masks[1].width,masks[1].height,0,0,masks[1].width,masks[1].height,SUBSTRACT); // mask5 = mask2 - mask1 masks[4]=masks[1].copy(); masks[4].blend(masks[0],0,0,masks[0].width,masks[0].height,0,0,masks[0].width,masks[0].height,SUBSTRACT); } void loop() { background(mouseX*0.5); for(int i=0; i