srecord noeq G22RegionPanel(IImageRegion region) > MetaWithChangeListeners is Swingable { settable transient G22Utils g22utils; settable BufferedImage originalImage; settableWithVar bool showOriginalColors = true; transient ImageSurface is; cachedVisualize { is = g22utils.stdImageSurface(); imageSurfaceCheckerBoardBackground(is); varShowOriginalColors().onChangeAndNow(l0 updateImage); ret northAndCenterWithMargins( jcenteredline( liveValueCheckBox(varShowOriginalColors(), "Show original colors"), jbutton("Save mask", rThread saveMask) ), g22utils.wrap(is)); } void updateImage { if (showOriginalColors) is.setImage(new CutOutRegionFromImage(region) .margin(10).fullImage(originalImage)!); else is.setImage(regionToBinaryImage(region)); } void saveMask { var maskSize = g22utils.projectInfo().defaultMaskSize(); var maskImage = g22standardRegionToMaskImage(region, maskSize); new G22MaskConcept mask; mask.maskImage = maskImage; g22utils.registerConcept(mask); } }