!7 static ScreenLens lens; static volatile L segments; static BufferedImage imageForSegments; p-substance { lens = new ScreenLens; lens.postProcess = func(BufferedImage img) { BWImage bw = bwImageTo2Bit(new BWImage(img), 0.5f); img = bw.getBufferedImage(); segments = autoSegment(bw, 2); imageForSegments = img; drawBoxes(img, rectsToRectangles(segments), Color.red, 0.8f); ret img; }; lens.start(); makeBot("Screen Lens b/w."); } static S answer(S s) { new Matches m; if "segments" ret structure(segments); // get both in a synchronized manner if "image and segments" { L segments = main.segments; RGBImage image = new RGBImage(imageForSegments); ret structure(ll(image, segments)); } ret lens.answer(s); }