sclass Screenshot extends Concept { S pngPath; // optional, relative (program ID + "/" + file name) Rect r; // optional, rectangle that was shot *() {} // for persistance *(BufferedImage img) { savePNG(pngFile(), img); } File pngFile() { if (pngPath != null) ret prepareFile(new File(javaxDataDir(), pngPath)); ret prepareProgramFile(_programID(), "screenshot" + id + ".png"); } BufferedImage loadImage() { ret loadImage2(pngFile()); } bool hasImage() { ret pngFile().exists(); } }