// file FillDemoFills.java // Slow and Fast flood fills. // by Harriet Fell // fell@ccs.neu.edu // July 2004 import java.awt.*; import java.awt.geom.*; import javax.swing.*; import java.awt.image.*; import java.awt.event.*; class FillDemoFills { // implements MouseListener { //Runnable { Graphics2D g2; int wd; int ht; int dSize; // dot size int fillType; int [][] theGrid = new int[20][20]; FillDemoFills(Graphics2D g, int fType, int width, int height, int h, int v) { g2 = g; wd = width; ht = height; dSize = Math.min(wd/20, ht/20); fillType = fType; BoundaryFill4(h, v, Color.red, Color.black); } // recursive boundary fill void BoundaryFill4(int h, int v, Color fillC, Color boundaryC){ //d.Fill(); //d.Flash(); if (0 <= h && h < 20 && 0 <= v && v < 20 && theGrid[h][v] != 2) {//!Filled(h, v, fill, boundary)){ Dot d = new Dot(g2, wd, ht, h, v, Color.red); d.Fill(); theGrid[h][v] = 2; BoundaryFill4(h+1, v, fillC, boundaryC); BoundaryFill4(h-1, v, fillC, boundaryC); BoundaryFill4(h, v+1, fillC, boundaryC); BoundaryFill4(h, v-1, fillC, boundaryC); } } // Utility function }