@Override public void writeExternal(final ObjectOutput out) throws IOException { super.writeExternal(out); final PolygonRegionOfInterest roi = getRegionOfInterest(); final int vertexCount = roi.getVertexCount(); out.writeInt(vertexCount); for (int i = 0; i < vertexCount; i++) { final RealLocalizable vertex = roi.getVertex(i); out.writeDouble(vertex.getDoublePosition(0)); out.writeDouble(vertex.getDoublePosition(1)); } }
private Roi createLineRoi(final PolygonOverlay overlay) { final PolygonRegionOfInterest region = overlay.getRegionOfInterest(); double[] p1 = new double[overlay.numDimensions()]; double[] p2 = new double[overlay.numDimensions()]; final RealLocalizable vp1 = region.getVertex(0); final RealLocalizable vp2 = region.getVertex(1); vp1.localize(p1); vp2.localize(p2); return createLineRoi(overlay, p1, p2); }
private Roi createPointRoi(final PolygonOverlay overlay) { PolygonRegionOfInterest region = overlay.getRegionOfInterest(); int nPoints = region.getVertexCount(); float[] xPts = new float[nPoints]; float[] yPts = new float[nPoints]; for (int i = 0; i < nPoints; i++) { RealLocalizable vertex = region.getVertex(i); xPts[i] = vertex.getFloatPosition(0); yPts[i] = vertex.getFloatPosition(1); } PointRoi roi = new PointRoi(xPts, yPts, nPoints); assignPropertiesToRoi(roi, overlay); return roi; }
@Override public void writeExternal(final ObjectOutput out) throws IOException { super.writeExternal(out); final PolygonRegionOfInterest roi = getRegionOfInterest(); final int vertexCount = roi.getVertexCount(); out.writeInt(vertexCount); for (int i = 0; i < vertexCount; i++) { final RealLocalizable vertex = roi.getVertex(i); out.writeDouble(vertex.getDoublePosition(0)); out.writeDouble(vertex.getDoublePosition(1)); } }
private Roi createPolygonRoi(final PolygonOverlay overlay) { final PolygonRegionOfInterest region = overlay.getRegionOfInterest(); final int vertexCount = region.getVertexCount(); if (vertexCount == 1) return createPointRoi(overlay); if (vertexCount == 2) return createLineRoi(overlay); final float[] x = new float[vertexCount]; final float[] y = new float[vertexCount]; for (int v = 0; v < vertexCount; v++) { final RealLocalizable vertex = region.getVertex(v); x[v] = vertex.getFloatPosition(0); y[v] = vertex.getFloatPosition(1); } final Roi roi = new PolygonRoi(x, y, vertexCount, Roi.POLYGON); assignPropertiesToRoi(roi, overlay); return roi; }
@Override public void updateFigure(final OverlayView view, final BezierFigure figure) { super.updateFigure(view, figure); final PolygonOverlay polygonOverlay = downcastOverlay(view.getData()); final PolygonRegionOfInterest roi = polygonOverlay.getRegionOfInterest(); final int vertexCount = roi.getVertexCount(); while (figure.getNodeCount() > vertexCount) { figure.removeNode(vertexCount); } for (int i = 0; i < vertexCount; i++) { final RealLocalizable vertex = roi.getVertex(i); final double x = vertex.getDoublePosition(0); final double y = vertex.getDoublePosition(1); if (figure.getNodeCount() == i) { figure.addNode(new Node(x, y)); } else { final Node node = figure.getNode(i); node.mask = 0; Arrays.fill(node.x, x); Arrays.fill(node.y, y); } } }