private void attachOverlays(final ImageDisplay inputDisp, final ImageDisplay outputDisp, final List<Overlay> overlays) { final RealRect bounds = overlayService.getSelectionBounds(inputDisp); final double[] toOrigin = new double[2]; toOrigin[0] = -bounds.x; toOrigin[1] = -bounds.y; final List<Overlay> newOverlays = new ArrayList<>(); for (final Overlay overlay : overlays) { if (overlayWithinBounds(overlay, bounds)) { // add a reference to existing overlay? if (toOrigin[0] == 0 && toOrigin[1] == 0) { newOverlays.add(overlay); } else { // different origins means must create new overlays final Overlay newOverlay = overlay.duplicate(); newOverlay.move(toOrigin); newOverlays.add(newOverlay); } } } overlayService.addOverlays(outputDisp, newOverlays); }
/** * Updates the given {@link ImageDisplay} to contain {@link Overlay}s * corresponding to all the given {@link ImagePlus}'s Rois (both the active * Roi and the Rois stored in ImageJ 1.x's current Overlay). */ @Override public void updateDisplay(final ImageDisplay display, final ImagePlus imp) { final List<Overlay> overlaysToRemove = overlayService.getOverlays(display); for (final Overlay overlay : overlaysToRemove) { overlayService.removeOverlay(display, overlay); } /* if (fullySelected(display, imp)) { for (DataView view : display) view.setSelected(true); } else { */ final List<Overlay> overlays = getOverlays(imp); overlayService.addOverlays(display, overlays); // } setModernThreshold(display, imp); }