protected void exportToROIManager(ImagePlus image) { Roi[] rois = map.get(image); if (rois == null) return; int currentSlice = image.getCurrentSlice(); RoiManager manager = RoiManager.getInstance(); if (manager == null) manager = new RoiManager(); for (int i = 0; i < rois.length; i++) if (rois[i] != null) { image.setSliceWithoutUpdate(i + 1); manager.add(image, rois[i], i + 1); } image.setSlice(currentSlice); }
/** Obsolete */ public void setShowAllROIs(boolean showAllROIs) { RoiManager rm = RoiManager.getInstance(); if (rm!=null) rm.runCommand(showAllROIs?"show all":"show none"); }
/** Returns the slice number associated with the specified ROI or name, or -1 if the ROI or name does not include a slice number. */ int getSliceNumber(Roi roi, String label) { int slice = roi!=null?roi.getPosition():-1; if (slice==0) slice=-1; if (slice==-1) slice = getSliceNumber(label); return slice; }
void add(boolean shiftKeyDown, boolean altKeyDown) { if (shiftKeyDown) addAndDraw(altKeyDown); else if (altKeyDown) addRoi(true); else addRoi(false); }
/** * Returns the rois if any stored in the ROI manager. * @return See above. */ public static Roi[] readFromRoiManager() { RoiManager manager = RoiManager.getInstance(); if (manager == null) return null; return manager.getRoisAsArray(); }
} else interp.getRightParen(); if (RoiManager.getInstance()==null&&roiManager==null) { if (Interpreter.isBatchMode()) roiManager = new RoiManager(true); else IJ.run("ROI Manager..."); RoiManager rm = roiManager!=null?roiManager:RoiManager.getInstance(); if (rm==null) interp.error("ROI Manager not found"); return setMultipleIndexes(rm); if (twoArgCommand) rm.runCommand(cmd, path); else if (add) rm.runCommand("Add", color, lineWidth); else if (select) { int n = rm.getCount(); checkIndex(index, 0, n-1); if (shiftKeyDown || altKeyDown) { rm.select(index, shiftKeyDown, altKeyDown); shiftKeyDown = altKeyDown = false; } else rm.select(index); } else if (cmd.equals("count")) countOrIndex = rm.getCount(); else if (cmd.equals("index")) countOrIndex = rm.getSelectedIndex();
if (!(retrieve instanceof OMEXMLMetadata)) return; int nextRoi = 0; RoiManager manager = RoiManager.getInstance(); if (roiCount > 0 && manager == null && roisMode.equals(ImporterOptions.ROIS_MODE_MANAGER)) { manager = new RoiManager(); manager.add(images[imageNum], roi, nextRoi++); } else if (roisMode.equals(ImporterOptions.ROIS_MODE_OVERLAY)) { Overlay overlay = images[imageNum].getOverlay(); manager.setAlwaysOnTop(true); manager.runCommand("show all with labels");
public void run(String arg) { RoiManager roiman = RoiManager.getInstance(); if (roiman==null || roiman.getCount()<2){ IJ.error("RoiInterpolator", "Please populate the ROI Manager with at least two ROIs"); return; Roi[] rois = roiman.getRoisAsArray(); int xmax = 0; int xmin = Integer.MAX_VALUE; ArrayList<Integer> templateSlices = new ArrayList<Integer>(); for (Roi roi : rois){ int slice = roiman.getSliceNumber(roi.getName()); if (!templateSlices.contains(new Integer(slice))) templateSlices.add(new Integer(slice)); bp.setColor(255); for (Roi roi : rois){ int slice = roiman.getSliceNumber(roi.getName()); if (slice==zmin+s){ Rectangle bounds = roi.getBounds(); Rectangle bounds = roi.getBounds(); roi.setLocation(bounds.x+xmin, bounds.y+ymin); roiman.addRoi(roi); roiman.runCommand("sort"); IJ.showStatus("ROIs interpolated");
add(shift, alt); if (IJ.isJava18()&&IJ.isMacOSX()) repaint(); } else if (cmd.equals("add & draw")) addAndDraw(false); else if (cmd.equals("update")) update(true); else if (cmd.equals("update2")) update(false); else if (cmd.equals("delete")) delete(false); else if (cmd.equals("measure")) measure(COMMAND); else if (cmd.equals("draw")) drawOrFill(DRAW); else if (cmd.equals("fill")) drawOrFill(FILL); else if (cmd.equals("label")) drawOrFill(LABEL); else if (cmd.equals("and")) and(); else if (cmd.equals("or") || cmd.equals("combine")) combine(); else if (cmd.equals("xor")) xor(); else if (cmd.equals("split")) split(); else if (cmd.equals("sort")) sort();
public boolean roiManagerSelect(Roi roi, boolean delete) { RoiManager rm=RoiManager.getInstance(); if (rm==null) return false; int index = rm.getRoiIndex(roi); if (index<0) return false; if (delete) { rm.select(imp, index); rm.runCommand("delete"); } else rm.selectAndMakeVisible(imp, index); return true; }
void show() { ImagePlus imp = IJ.getImage(); imp.setHideOverlay(false); if (imp.getOverlay()==null) { RoiManager rm = RoiManager.getInstance(); if (rm!=null && rm.getCount()>1) { if (!IJ.isMacro()) rm.toFront(); rm.runCommand("show all with labels"); } } }
protected void importFromROIManager() { ImagePlus image = WindowManager.getCurrentImage(); if (image == null) return; Roi[] rois = getRois(image); RoiManager manager = RoiManager.getInstance(); if (manager == null) return; List labels = manager.getList(); @SuppressWarnings("unchecked") Hashtable<String, Roi> table = (Hashtable<String, Roi>)manager.getROIs(); for (int i = 0; i < labels.getItemCount(); i++) { String label = labels.getItem(i); int index = manager.getSliceNumber(label) - 1; if (index >= 0 && index < rois.length) rois[index] = table.get(label); } setRoi(image, rois[image.getCurrentSlice() - 1]); }
void showWindow() { ImageJ ij = IJ.getInstance(); addKeyListener(ij); addMouseListener(this); addMouseWheelListener(this); WindowManager.addWindow(this); setLayout(new BorderLayout()); listModel = new DefaultListModel(); list.setModel(listModel); if (IJ.isLinux()) list.setBackground(Color.white); JScrollPane scrollPane = new JScrollPane(list, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); add("Center", scrollPane); panel = new Panel(); int nButtons = BUTTONS; panel.setLayout(new GridLayout(nButtons, 1, 5, 0)); addButton("Add [t]"); addButton("Update"); addButton("Delete"); addButton("Rename..."); addButton("Measure"); addButton("Deselect"); addButton("Properties..."); addButton("Flatten [F]"); addButton(moreButtonLabel); showAllCheckbox.addItemListener(this); panel.add(showAllCheckbox); labelsCheckbox.addItemListener(this); panel.add(labelsCheckbox);
public void setOverlay(Overlay overlay) { if (overlay==null) { overlayTemplate = null; return; } reset(); overlayTemplate = overlay.create(); setEditMode(null, false); for (int i=0; i<overlay.size(); i++) add(overlay.get(i), i+1); setEditMode(null, true); runCommand("show all"); }
RoiManager rm = RoiManager.getInstance2(); if (rm == null) rm = new RoiManager(); else if (reset) rm.reset(); Prefs.showAllSliceOnly = !plugin.singleSlice; rm.setEditMode(plugin.getImagePlus(), false); for (final Roi path : overlay.toArray()) rm.addRoi(path); rm.runCommand("sort"); rm.setEditMode(plugin.getImagePlus(), true); rm.runCommand("show all without labels");
public void run(ImageProcessor ip) { roiManager = RoiManager.getInstance(); if (roiManager == null || roiManager.getCount() < 2) { IJ.error("Need at least two line selections in the ROI Manager"); return; roiManager.runCommand("Select All"); roiManager.runCommand("Delete"); for (int i = 0; i < rois.length; i++) if (rois[i] != null) { image.setSliceWithoutUpdate(i + 1); roiManager.addRoi(rois[i]);
boolean addRoi(Roi roi, boolean promptForName, Color color, int lineWidth) { if (listModel==null) IJ.log("<<Error: Uninitialized RoiManager>>"); ImagePlus imp = roi==null?getImage():WindowManager.getCurrentImage(); if (roi==null) { if (imp==null) roi = imp.getRoi(); if (roi==null) { error("The active image does not have a selection."); return false; int n = getCount(); int position = imp!=null&&!ignorePosition?roi.getPosition():0; int saveCurrentSlice = imp!=null?imp.getCurrentSlice():0; if (roi2!=null) { String label = (String)listModel.getElementAt(n-1); int slice2 = getSliceNumber(roi2, label); if (roi.equals(roi2) && (slice2==-1||slice2==imp.getCurrentSlice()) && imp.getID()==prevID && !Interpreter.isBatchMode()) { if (position>0) prevID = imp!=null?imp.getID():0; String name = roi.getName(); if (isStandardName(name)) name = null; String label = name!=null?name:getLabel(imp, roi, -1); if (promptForName) label = promptForName(label); if (label==null) {
void updateShowAll() { ImagePlus imp = WindowManager.getCurrentImage(); if (imp==null) return; if (showAllCheckbox.getState()) { if (getCount()>0) { Roi[] rois = getRoisAsArray(); Overlay overlay = newOverlay(); for (int i=0; i<rois.length; i++) overlay.add(rois[i]); setOverlay(imp, overlay); } else removeOverlay(imp); } else removeOverlay(imp); }
/** This is a macro-callable version of getSelectedIndexes(). * Example: indexes=split(call("ij.plugin.frame.RoiManager.getIndexesAsString")); */ public static String getIndexesAsString() { RoiManager rm = RoiManager.getInstance(); if (rm==null) return ""; String str = Arrays.toString(rm.getSelectedIndexes()); str = str.replaceAll(",",""); return str.substring(1,str.length()-1); }
boolean drawOrFill(int mode) { int[] indexes = getIndexes(); ImagePlus imp = WindowManager.getCurrentImage(); imp.deleteRoi(); mode = DRAW; String name = (String) listModel.getElementAt(indexes[i]); int slice2 = getSliceNumber(roi, name); if (slice2>=1 && slice2<=imp.getStackSize()) { imp.setSlice(slice2); if (record() && (mode==DRAW||mode==FILL)) Recorder.record("roiManager", mode==DRAW?"Draw":"Fill"); if (showAllCheckbox.getState()) runCommand("show none"); imp.updateAndDraw(); return true;