if (color==newColor) return false; stackSize = 0; push(x, y); while(true) { x = popx(); if (x1>0){ if (ip.getPixel(x1-1,y-1)==color){ push(x1-1,y-1); push(x2+1,y-1); if (x1>0){ if (ip.getPixel(x1-1,y+1)==color){ push(x1-1,y+1); push(x2+1,y+1); for (int i=x1; i<=x2; i++) { // find scan-lines above this one if (!inScanLine && y>0 && ip.getPixel(i,y-1)==color) {push(i, y-1); inScanLine = true;} else if (inScanLine && y>0 && ip.getPixel(i,y-1)!=color) inScanLine = false; for (int i=x1; i<=x2; i++) {// find scan-lines below this one if (!inScanLine && y<hm1 && ip.getPixel(i,y+1)==color) {push(i, y+1); inScanLine = true;} else if (inScanLine && y<hm1 && ip.getPixel(i,y+1)!=color) inScanLine = false;
if (color==newColor) return false; stackSize = 0; push(x, y); while(true) { x = popx(); if (x1>0){ if (ip.getPixel(x1-1,y-1)==color){ push(x1-1,y-1); push(x2+1,y-1); if (x1>0){ if (ip.getPixel(x1-1,y+1)==color){ push(x1-1,y+1); push(x2+1,y+1); for (int i=x1; i<=x2; i++) { // find scan-lines above this one if (!inScanLine && y>0 && ip.getPixel(i,y-1)==color) {push(i, y-1); inScanLine = true;} else if (inScanLine && y>0 && ip.getPixel(i,y-1)!=color) inScanLine = false; for (int i=x1; i<=x2; i++) {// find scan-lines below this one if (!inScanLine && y<hm1 && ip.getPixel(i,y+1)==color) {push(i, y+1); inScanLine = true;} else if (inScanLine && y<hm1 && ip.getPixel(i,y+1)!=color) inScanLine = false;
if (color==newColor) return false; stackSize = 0; push(x, y); while(true) { x = popx(); for (int i=x1; i<=x2; i++) { // find scan-lines above this one if (!inScanLine && y>0 && ip.getPixel(i,y-1)==color) {push(i, y-1); inScanLine = true;} else if (inScanLine && y>0 && ip.getPixel(i,y-1)!=color) inScanLine = false; for (int i=x1; i<=x2; i++) { // find scan-lines below this one if (!inScanLine && y<height-1 && ip.getPixel(i,y+1)==color) {push(i, y+1); inScanLine = true;} else if (inScanLine && y<height-1 && ip.getPixel(i,y+1)!=color) inScanLine = false;
if (color==newColor) return false; stackSize = 0; push(x, y); while(true) { x = popx(); for (int i=x1; i<=x2; i++) { // find scan-lines above this one if (!inScanLine && y>0 && ip.getPixel(i,y-1)==color) {push(i, y-1); inScanLine = true;} else if (inScanLine && y>0 && ip.getPixel(i,y-1)!=color) inScanLine = false; for (int i=x1; i<=x2; i++) { // find scan-lines below this one if (!inScanLine && y<height-1 && ip.getPixel(i,y+1)==color) {push(i, y+1); inScanLine = true;} else if (inScanLine && y<height-1 && ip.getPixel(i,y+1)!=color) inScanLine = false;
mask.setColor(255); stackSize = 0; push(x, y); while(true) { x = popx(); for (int i=x1; i<=x2; i++) { // find scan-lines above this one if (!inScanLine && y>0 && inParticle(i,y-1,level1,level2)) {push(i, y-1); inScanLine = true;} else if (inScanLine && y>0 && !inParticle(i,y-1,level1,level2)) inScanLine = false; for (int i=x1; i<=x2; i++) { // find scan-lines below this one if (!inScanLine && y<height-1 && inParticle(i,y+1,level1,level2)) {push(i, y+1); inScanLine = true;} else if (inScanLine && y<height-1 && !inParticle(i,y+1,level1,level2)) inScanLine = false;
mask.setColor(255); stackSize = 0; push(x, y); while(true) { x = popx(); for (int i=x1; i<=x2; i++) { // find scan-lines above this one if (!inScanLine && y>0 && inParticle(i,y-1,level1,level2)) {push(i, y-1); inScanLine = true;} else if (inScanLine && y>0 && !inParticle(i,y-1,level1,level2)) inScanLine = false; for (int i=x1; i<=x2; i++) { // find scan-lines below this one if (!inScanLine && y<height-1 && inParticle(i,y+1,level1,level2)) {push(i, y+1); inScanLine = true;} else if (inScanLine && y<height-1 && !inParticle(i,y+1,level1,level2)) inScanLine = false;