protected BufferedImage getCache()
			{
			if (floodFill != null) return myCache;
			floodFill = new FloodFill(canvas,source,origin,threshold);
			floodEdge = null;

			int w = floodFill.maxX - floodFill.minX + 1;
			int h = floodFill.maxY - floodFill.minY + 1;

			int rgb = c1.getRGB();
			myCache = new BufferedImage(w,h,BufferedImage.TYPE_INT_ARGB);
			if (c1.equals(c2))
				{
				for (Point p : floodFill.set)
					myCache.setRGB(p.x - floodFill.minX,p.y - floodFill.minY,rgb);
				return myCache;
				}

			floodEdge = new EdgeDetect(floodFill,canvas);
			if (c2 != null)
				{
				int rgb2 = c2.getRGB();
				for (Point p : floodFill.set)
					myCache.setRGB(p.x - floodFill.minX,p.y - floodFill.minY,rgb2);
				}
			for (Point p : floodEdge.set)
				myCache.setRGB(p.x - floodFill.minX,p.y - floodFill.minY,rgb);
			return myCache;
			}