/** 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; }
/** 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; }
/** Constructs a ColorChooser using the specified title and initial color. */ public RoiProperties(String title, Roi roi) { if (roi==null) throw new IllegalArgumentException("ROI is null"); this.title = title; showName = title.startsWith("Prop"); showListCoordinates = showName && title.endsWith(" "); nProperties = showListCoordinates?roi.getPropertyCount():0; addToOverlay = title.equals("Add to Overlay"); overlayOptions = title.equals("Overlay Options"); if (overlayOptions) { imp = WindowManager.getCurrentImage(); overlay = imp!=null?imp.getOverlay():null; setPositions = roi.getPosition()!=0; } this.roi = roi; }
/** Constructs a ColorChooser using the specified title and initial color. */ public RoiProperties(String title, Roi roi) { if (roi==null) throw new IllegalArgumentException("ROI is null"); this.title = title; showName = title.startsWith("Prop"); showListCoordinates = showName && title.endsWith(" "); nProperties = showListCoordinates?roi.getPropertyCount():0; addToOverlay = title.equals("Add to Overlay"); overlayOptions = title.equals("Overlay Options"); if (overlayOptions) { imp = WindowManager.getCurrentImage(); overlay = imp!=null?imp.getOverlay():null; setPositions = roi.getPosition()!=0; } this.roi = roi; }
/** Removes ROIs having positions outside of the * interval defined by firstSlice and lastSlice. * Marcel Boeglin, September 2013 */ public void crop(int firstSlice, int lastSlice) { for (int i=size()-1; i>=0; i--) { Roi roi = get(i); int position = roi.getPosition(); if (position>0) { if (position<firstSlice || position>lastSlice) remove(i); else roi.setPosition(position-firstSlice+1); } } }
/** Removes ROIs having positions outside of the * interval defined by firstSlice and lastSlice. * Marcel Boeglin, September 2013 */ public void crop(int firstSlice, int lastSlice) { for (int i=size()-1; i>=0; i--) { Roi roi = get(i); int position = roi.getPosition(); if (position>0) { if (position<firstSlice || position>lastSlice) remove(i); else roi.setPosition(position-firstSlice+1); } } }
private Overlay projectStackRois(Overlay overlay) { if (overlay==null) return null; Overlay overlay2 = overlay.create(); Roi roi; int s; for (Roi r : overlay.toArray()) { s = r.getPosition(); roi = (Roi)r.clone(); if (s>=startSlice && s<=stopSlice || s==0) { roi.setPosition(s); overlay2.add(roi); } } return overlay2; }
private Overlay projectStackRois(Overlay overlay) { if (overlay==null) return null; Overlay overlay2 = overlay.create(); Roi roi; int s; for (Roi r : overlay.toArray()) { s = r.getPosition(); roi = (Roi)r.clone(); if (s>=startSlice && s<=stopSlice || s==0) { roi.setPosition(s); overlay2.add(roi); } } return overlay2; }
putShort(RoiDecoder.BOTTOM, r.y+r.height); putShort(RoiDecoder.RIGHT, r.x+r.width); putInt(RoiDecoder.POSITION, roi.getPosition());
putShort(RoiDecoder.BOTTOM, r.y+r.height); putShort(RoiDecoder.RIGHT, r.x+r.width); putInt(RoiDecoder.POSITION, roi.getPosition());
void toRoiManager() { ImagePlus imp = IJ.getImage(); Overlay overlay = imp.getOverlay(); if (overlay==null) { IJ.error("Overlay required"); return; } RoiManager rm = RoiManager.getInstance2(); if (rm==null) rm = new RoiManager(); if (overlay.size()>=4 && overlay.get(3).getPosition()!=0) Prefs.showAllSliceOnly = true; rm.setOverlay(overlay); imp.setOverlay(null); }
void toRoiManager() { ImagePlus imp = IJ.getImage(); Overlay overlay = imp.getOverlay(); if (overlay==null) { IJ.error("Overlay required"); return; } RoiManager rm = RoiManager.getInstance2(); if (rm==null) rm = new RoiManager(); if (overlay.size()>=4 && overlay.get(3).getPosition()!=0) Prefs.showAllSliceOnly = true; rm.setOverlay(overlay); imp.setOverlay(null); }
/** Flattens Overlay 'overlay' on slice 'slice' of ImageStack 'stack'. * Copied from OverlayCommands by Marcel Boeglin 2014.01.08. */ private void flattenImage(ImageStack stack, int slice, Overlay overlay, boolean showAll) { ImageProcessor ips = stack.getProcessor(slice); ImagePlus imp1 = new ImagePlus("temp", ips); int w = imp1.getWidth(); int h = imp1.getHeight(); for (int i=0; i<overlay.size(); i++) { Roi r = overlay.get(i); int roiPosition = r.getPosition(); //IJ.log(slice+" "+i+" "+roiPosition+" "+showAll+" "+overlay.size()); if (!(roiPosition==0 || roiPosition==slice || showAll)) r.setLocation(w, h); } imp1.setOverlay(overlay); ImagePlus imp2 = imp1.flatten(); stack.setPixels(imp2.getProcessor().getPixels(), slice); }
/** Flattens Overlay 'overlay' on slice 'slice' of ImageStack 'stack'. * Copied from OverlayCommands by Marcel Boeglin 2014.01.08. */ private void flattenImage(ImageStack stack, int slice, Overlay overlay, boolean showAll) { ImageProcessor ips = stack.getProcessor(slice); ImagePlus imp1 = new ImagePlus("temp", ips); int w = imp1.getWidth(); int h = imp1.getHeight(); for (int i=0; i<overlay.size(); i++) { Roi r = overlay.get(i); int roiPosition = r.getPosition(); //IJ.log(slice+" "+i+" "+roiPosition+" "+showAll+" "+overlay.size()); if (!(roiPosition==0 || roiPosition==slice || showAll)) r.setLocation(w, h); } imp1.setOverlay(overlay); ImagePlus imp2 = imp1.flatten(); stack.setPixels(imp2.getProcessor().getPixels(), slice); }
private void setPosition(ImagePlus imp, Roi roi) { boolean setPos = defaultRoi.getPosition()!=0; int stackSize = imp.getStackSize(); if (setPos && stackSize>1) { if (imp.isHyperStack()||imp.isComposite()) { boolean compositeMode = imp.isComposite() && ((CompositeImage)imp).getMode()==IJ.COMPOSITE; int channel = !compositeMode||imp.getNChannels()==stackSize?imp.getChannel():0; if (imp.getNSlices()>1) roi.setPosition(channel, imp.getSlice(), 0); else if (imp.getNFrames()>1) roi.setPosition(channel, 0, imp.getFrame()); } else roi.setPosition(imp.getCurrentSlice()); } }
private void setPosition(ImagePlus imp, Roi roi) { boolean setPos = defaultRoi.getPosition()!=0; int stackSize = imp.getStackSize(); if (setPos && stackSize>1) { if (imp.isHyperStack()||imp.isComposite()) { boolean compositeMode = imp.isComposite() && ((CompositeImage)imp).getMode()==IJ.COMPOSITE; int channel = !compositeMode||imp.getNChannels()==stackSize?imp.getChannel():0; if (imp.getNSlices()>1) roi.setPosition(channel, imp.getSlice(), 0); else if (imp.getNFrames()>1) roi.setPosition(channel, 0, imp.getFrame()); } else roi.setPosition(imp.getCurrentSlice()); } }
roi.setPosition(defaultRoi.getPosition()); RoiProperties rp = new RoiProperties("Overlay Options", roi); if (!rp.showDialog()) return;
roi.setPosition(defaultRoi.getPosition()); RoiProperties rp = new RoiProperties("Overlay Options", roi); if (!rp.showDialog()) return;
int digits = strokeWidth==(int)strokeWidth?0:1; String sWidth = IJ.d2s(strokeWidth,digits); int position = rois[i].getPosition(); int c = rois[i].getCPosition(); int z = rois[i].getZPosition();
int digits = strokeWidth==(int)strokeWidth?0:1; String sWidth = IJ.d2s(strokeWidth,digits); int position = rois[i].getPosition(); int c = rois[i].getCPosition(); int z = rois[i].getZPosition();