sinterface IBWImage extends MakesBufferedImage, IRGBImage { float getFloatPixel(int x, int y); // usually between 0 and 1 default int getInt(int x, int y) { ret iround(getFloatPixel(x, y)*255f); } // implementing IRGBImage default int getIntPixel(int x, int y) { ret rgbIntFromGrayscale(getInt(x, y)); } default float getFloatPixel(Pt p) { ret getFloatPixel(p.x, p.y); } public default BufferedImage getBufferedImage() { ret toBWImage(this).getBufferedImage(); } default BWImage toBWImage() { ret iBWImageToBWImage(this); } }