package cz.cuni.lf1.lge.ThunderSTORM.rendering; import cz.cuni.lf1.lge.ThunderSTORM.rendering.ui.ScatterRenderingUI; import ij.process.FloatProcessor; /** * Simple rendering using scatter plot. If there is any molecule at the pixel * location, the pixel value will be a constant positive number and zero * otherwise. */ public class ScatterRendering extends AbstractRendering implements IncrementalRenderingMethod { private ScatterRendering(Builder builder) { super(builder); } @Override public String getRendererName() { return ScatterRenderingUI.name; } public static class Builder extends AbstractBuilder<Builder, ScatterRendering> { @Override public ScatterRendering build() { super.validate(); return new ScatterRendering(this); } } /** * * @param x * @param y * @param z * @param dx * @param dz ignored */ @Override protected void drawPoint(double x, double y, double z, double dx, double dz) { if(isInBounds(x, y)) { int u = (int) ((x - xmin) / resolution); int v = (int) ((y - ymin) / resolution); int w = (int) ((z - zFrom) / zStep); if(w >= 0 && w < zSlices) { FloatProcessor img = (FloatProcessor) slices[w]; img.setf(u, v, 1); } } } }