All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.github.mianalysis.mia.process.skeleton.SkeletonVisualiser Maven / Gradle / Ivy

package io.github.mianalysis.mia.process.skeleton;

import java.awt.Color;
import java.util.Iterator;
import java.util.LinkedHashSet;

import ij.ImagePlus;
import ij.gui.Line;
import ij.gui.OvalRoi;
import ij.gui.Overlay;
import io.github.mianalysis.mia.object.coordinates.Vertex;
import io.github.mianalysis.mia.object.coordinates.VertexCollection;

/**
 * Created by sc13967 on 25/01/2018.
 */
public class SkeletonVisualiser {
    Color line_col = Color.BLUE;
    Color node_col = Color.RED;
    double vertexR = 1;

    public void drawOverlay(VertexCollection vertices, ImagePlus ipl) {
        Overlay ovl = new Overlay();

        for (Vertex vertex:vertices) {
            //Adding current vertex
            ovl.addElement(drawNode(vertex));

            for (Vertex neighbour:vertex.getNeighbours()){
                ovl.add(drawLine(vertex, neighbour));
            }
        }

        ipl.setOverlay(ovl);

    }

    public void drawPath(LinkedHashSet vertices, ImagePlus ipl) {
        Overlay ovl = new Overlay();

        Iterator iterator = vertices.iterator();
        Vertex vertex1 = iterator.next();
        Vertex vertex2 = null;

        while (iterator.hasNext()) {
            vertex2 = iterator.next();

            //Adding current vertex
            ovl.addElement(drawNode(vertex1));
            ovl.add(drawLine(vertex1,vertex2));

            vertex1 = vertex2;

        }

        ovl.addElement(drawNode(vertex2));

        ipl.setOverlay(ovl);
    }

    private OvalRoi drawNode(Vertex vertex) {
        double x = vertex.getX();
        double y = vertex.getY();

        OvalRoi ovr = new OvalRoi(x- vertexR /2+0.5,y- vertexR /2+0.5, vertexR, vertexR);
        ovr.setStrokeColor(node_col);

        return ovr;

    }

    private Line drawLine(Vertex vertex1, Vertex vertex2) {
        if (vertex2 == null) {
            return null;
        }

        double x1 = vertex1.getX();
        double y1 = vertex1.getY();
        double x2 = vertex2.getX();
        double y2 = vertex2.getY();

        Line line = new Line(x1+0.5,y1+0.5,x2+0.5,y2+0.5);
        line.setStrokeColor(line_col);

        return line;

    }

    public void setLineCol(Color col) {
        this.line_col = col;

    }

    public void setNodeCol(Color col) {
        this.node_col = col;

    }

    public void setVertexRadius(double val) {
        this.vertexR = val;

    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy