void updateSliceSummary() { int slices = imp.getStackSize(); float[] areas = rt.getColumn(ResultsTable.AREA); if (areas == null) areas = new float[0]; String label = imp.getTitle(); if (slices > 1) { label = imp.getStack().getShortSliceLabel(slice); label = label != null && !label.equals("") ? label : "" + slice; } String aLine = null; double sum = 0.0; int start = areas.length - particleCount; if (start < 0) return; for (int i = start; i < areas.length; i++) sum += areas[i]; int places = Analyzer.getPrecision(); Calibration cal = imp.getCalibration(); String total = "\t" + ResultsTable.d2s(sum, places); String average = "\t" + ResultsTable.d2s(sum / particleCount, places); String fraction = "\t" + ResultsTable.d2s(sum * 100.0 / totalArea, 1); aLine = label + "\t" + particleCount + total + average + fraction; aLine = addMeans(aLine, areas.length > 0 ? start : -1); if (slices == 1) { Frame frame = WindowManager.getFrame("Summary"); if (frame != null && (frame instanceof TextWindow) && summaryHdr.equals(prevHdr)) tw = (TextWindow) frame; } if (tw == null) { String title = slices == 1 ? "Summary" : "Summary of " + imp.getTitle(); tw = new TextWindow(title, summaryHdr, aLine, 450, 300); prevHdr = summaryHdr; } else tw.append(aLine); }
String n(double n) { String s; if (Math.round(n) == n) s = ResultsTable.d2s(n, 0); else s = ResultsTable.d2s(n, Analyzer.getPrecision()); return "\t" + s; }