void showResults() { int count = rt.getCounter(); // if (count==0) return; boolean lastSlice = !processStack || slice == imp.getStackSize(); if ((showChoice == OVERLAY_OUTLINES || showChoice == OVERLAY_MASKS) && slice == 1 && count > 0) imp.setOverlay(overlay); else if (outlines != null && lastSlice) { String title = imp != null ? imp.getTitle() : "Outlines"; String prefix; if (showChoice == MASKS) prefix = "Mask of "; else if (showChoice == ROI_MASKS) prefix = "Count Masks of "; else prefix = "Drawing of "; outlines.update(drawIP); outputImage = new ImagePlus(prefix + title, outlines); if (inSituShow) { if (imp.getStackSize() == 1) Undo.setup(Undo.TRANSFORM, imp); imp.setStack(null, outputImage.getStack()); } else if (!hideOutputImage) outputImage.show(); } if (showResults && !processStack) { TextPanel tp = IJ.getTextPanel(); if (beginningCount > 0 && tp != null && tp.getLineCount() != count) rt.show("Results"); Analyzer.firstParticle = beginningCount; Analyzer.lastParticle = Analyzer.getCounter() - 1; } else Analyzer.firstParticle = Analyzer.lastParticle = 0; }
/** * Saves statistics for one particle in a results table. This is a method subclasses may want to * override. */ protected void saveResults(ImageStatistics stats, Roi roi) { analyzer.saveResults(stats, roi); if (recordStarts) { rt.addValue("XStart", stats.xstart); rt.addValue("YStart", stats.ystart); } if (addToManager) { if (roiManager == null) { if (Macro.getOptions() != null && Interpreter.isBatchMode()) roiManager = Interpreter.getBatchModeRoiManager(); if (roiManager == null) { Frame frame = WindowManager.getFrame("ROI Manager"); if (frame == null) IJ.run("ROI Manager..."); frame = WindowManager.getFrame("ROI Manager"); if (frame == null || !(frame instanceof RoiManager)) { addToManager = false; return; } roiManager = (RoiManager) frame; } if (resetCounter) roiManager.runCommand("reset"); } if (imp.getStackSize() > 1) roi.setPosition(imp.getCurrentSlice()); if (lineWidth != 1) roi.setStrokeWidth(lineWidth); roiManager.add(imp, roi, rt.getCounter()); } if (showResults) rt.addResults(); }
/** * Draws a selected particle in a separate image. This is another method subclasses may want to * override. */ protected void drawParticle( ImageProcessor drawIP, Roi roi, ImageStatistics stats, ImageProcessor mask) { switch (showChoice) { case MASKS: drawFilledParticle(drawIP, roi, mask); break; case OUTLINES: case BARE_OUTLINES: case OVERLAY_OUTLINES: case OVERLAY_MASKS: drawOutline(drawIP, roi, rt.getCounter()); break; case ELLIPSES: drawEllipse(drawIP, stats, rt.getCounter()); break; case ROI_MASKS: drawRoiFilledParticle(drawIP, roi, mask, rt.getCounter()); break; default: } }