@Override public Overlay getActiveOverlay(final ImageDisplay disp) { for (final DataView view : disp) { if (view.isSelected() && view instanceof OverlayView) { return ((OverlayView) view).getData(); } } return null; }
@Override public void attributeChanged(final FigureEvent e) { if (updatingFigure) return; updatingOverlay = true; try { adapter.updateOverlay(OverlayFigureView.this.figure, OverlayFigureView.this.overlayView); overlayView.update(); } finally { updatingOverlay = false; } }
/** * When a tool creates an overlay, add the overlay/figure combo to an * {@link OverlayFigureView}. */ @EventHandler protected void onEvent(final FigureCreatedEvent event) { final ImageDisplay display = event.getDisplay(); if (display != getDisplay()) return; // not this canvas's display final OverlayView overlay = event.getView(); for (int i = 0; i < display.numDimensions(); i++) { final AxisType axisType = display.axis(i).type(); if (axisType.isXY()) continue; if (overlay.getData().dimensionIndex(axisType) < 0) { overlay.setPosition(display.getLongPosition(axisType), axisType); } } if (drawingView.getSelectedFigures().contains(event.getFigure())) { overlay.setSelected(true); } final OverlayFigureView figureView = new OverlayFigureView(displayViewer, overlay, event.getFigure()); figureViews.add(figureView); display.add(overlay); display.update(); }
final RegionOfInterest roi = overlay.getData().getRegionOfInterest(); if (roi != null) { final long minX = (long) Math.floor(roi.realMin(0)); final long minY = (long) Math.floor(roi.realMin(1)); final long maxY = (long) Math.ceil(roi.realMax(1)) + 1; final ColorRGB color = overlay.getData().getFillColor(); final IndexColorModel cm = new IndexColorModel(1, 2, new byte[] { 0, (byte) color.getRed() }, new byte[] { 0, (byte) color.getGreen() }, new byte[] { 0, (byte) color.getBlue() }, new byte[] { 0, (byte) overlay.getData().getAlpha() }); final int w = (int) (maxX - minX); final int h = (int) (maxY - minY); final byte[] bankData = db.getData(); final RealRandomAccess<BitType> ra = roi.realRandomAccess(); final Position planePos = overlay.getPlanePosition(); for (int i = 0; i < planePos.numDimensions(); i++) { final long position = planePos.getLongPosition(i);
@SuppressWarnings("unused") private Overlay getActiveOverlay() { final ImageDisplay activeDisplay = imageDisplayService.getActiveImageDisplay(); if (activeDisplay == null) return null; final List<DataView> views = activeDisplay; for (DataView view : views) { if (view.isSelected() && (view instanceof OverlayView)) return ((OverlayView) view).getData(); } return null; }
@Override public void figureChanged(final FigureEvent e) { if (updatingFigure) return; updatingOverlay = true; try { adapter.updateOverlay(OverlayFigureView.this.figure, OverlayFigureView.this.overlayView); overlayView.update(); } finally { updatingOverlay = false; } }
@Override public void updateFigure(final OverlayView view, final EllipseFigure figure) { super.updateFigure(view, figure); final EllipseOverlay overlay = downcastOverlay(view.getData()); final double centerX = overlay.getOrigin(0); final double centerY = overlay.getOrigin(1); final double radiusX = overlay.getRadius(0); final double radiusY = overlay.getRadius(1); figure.setBounds(new Point2D.Double(centerX - radiusX, centerY - radiusY), new Point2D.Double(centerX + radiusX, centerY + radiusY)); }
@Override public void updateOverlay(final BezierFigure figure, final OverlayView view) { super.updateOverlay(figure, view); assert view.getData() instanceof GeneralPathOverlay; final GeneralPathOverlay gpo = (GeneralPathOverlay) view.getData(); final GeneralPathRegionOfInterest gpr = gpo.getRegionOfInterest(); gpr.reset(); for (int i = 0; i < figure.getNodeCount(); i++) { final Node n = figure.getNode(i); if (i == 0) gpr.moveTo(n.x[0], n.y[0]); else gpr.lineTo(n.x[0], n.y[0]); } gpo.update(); }
@Override public void updateFigure(final OverlayView view, final LineFigure figure) { super.updateFigure(view, figure); final LineFigure lineFigure = figure; final Overlay overlay = view.getData(); assert overlay instanceof LineOverlay; final LineOverlay lineOverlay = (LineOverlay) overlay; final double pt1X = lineOverlay.getLineStart(0); final double pt1Y = lineOverlay.getLineStart(1); final double pt2X = lineOverlay.getLineEnd(0); final double pt2Y = lineOverlay.getLineEnd(1); lineFigure.setStartPoint(new Point2D.Double(pt1X, pt1Y)); lineFigure.setEndPoint(new Point2D.Double(pt2X, pt2Y)); }
@Override public void updateFigure(final OverlayView view, final RectangleFigure figure) { super.updateFigure(view, figure); final RectangleOverlay overlay = downcastOverlay(view.getData()); final double x0 = overlay.getOrigin(0); final double y0 = overlay.getOrigin(1); final double w = overlay.getExtent(0); final double h = overlay.getExtent(1); final Point2D.Double anch = new Point2D.Double(x0, y0); final Point2D.Double lead = new Point2D.Double(x0 + w, y0 + h); figure.setBounds(anch, lead); }
@Override public void updateFigure(final OverlayView view, final BezierFigure figure) { super.updateFigure(view, figure); assert view.getData() instanceof GeneralPathOverlay; final GeneralPathOverlay gpo = (GeneralPathOverlay) view.getData(); final GeneralPathRegionOfInterest gpr = gpo.getRegionOfInterest(); final PathIterator pi = gpr.getGeneralPath().getPathIterator(null); final int nCount = figure.getNodeCount(); int i = 0; final double[] pos = new double[6]; while (!pi.isDone()) { pi.currentSegment(pos); final Node n = new Node(pos[0], pos[1]); if (i < nCount) figure.getNode(i).setTo(n); else figure.addNode(n); pi.next(); i++; } while (i < figure.getNodeCount()) figure.removeNode(i); }
@Override public void updateFigure(final OverlayView view, final GeneralPathFigure figure) { super.updateFigure(view, figure); final GeneralPathOverlay overlay = downcastOverlay(view.getData()); final GeneralPathRegionOfInterest roi = overlay.getRegionOfInterest(); figure.setGeneralPath(roi.getGeneralPath()); }
@Override public void updateOverlay(final F figure, final OverlayView view) { final Color strokeColor = figure.get(AttributeKeys.STROKE_COLOR); final Overlay overlay = view.getData(); overlay.setLineColor(AWTColors.getColorRGB(strokeColor)); // The line style is intentionally omitted here because it is ambiguous and // because there is no UI for setting it by the JHotDraw UI. // FIXME - is this next line dangerous for drawing attributes? width could // conceivably be 0. overlay.setLineWidth(figure.get(AttributeKeys.STROKE_WIDTH)); final Color fillColor = figure.get(AttributeKeys.FILL_COLOR); overlay.setFillColor(AWTColors.getColorRGB(fillColor)); overlay.setAlpha(fillColor.getAlpha()); }
@Override public void updateFigure(final OverlayView view, final PointFigure figure) { super.updateFigure(view, figure); final PointFigure pointFigure = figure; final Overlay overlay = view.getData(); assert overlay instanceof PointOverlay; final PointOverlay pointOverlay = (PointOverlay) overlay; pointFigure.setFillColor(pointOverlay.getFillColor()); pointFigure.setLineColor(pointOverlay.getLineColor()); pointFigure.setPoints(pointOverlay.getPoints()); }
@Override public void updateOverlay(final GeneralPathFigure figure, final OverlayView view) { super.updateOverlay(figure, view); final GeneralPathOverlay overlay = downcastOverlay(view.getData()); final GeneralPathRegionOfInterest roi = overlay.getRegionOfInterest(); roi.reset(); BezierPathFunctions.addToRegionOfInterest(figure.getGeneralPath() .getPathIterator(null), roi); overlay.update(); }
@Override public void updateOverlay(final PointFigure figure, final OverlayView view) { final Overlay overlay = view.getData(); assert overlay instanceof PointOverlay; final PointOverlay pointOverlay = (PointOverlay) overlay; // do not let call to super.updateOverlay() mess with drawing attributes // so save colors final ColorRGB fillColor = overlay.getFillColor(); final ColorRGB lineColor = overlay.getLineColor(); // call super in case it initializes anything of importance super.updateOverlay(figure, view); // and restore colors to what we really want pointOverlay.setFillColor(fillColor); pointOverlay.setLineColor(lineColor); // set points pointOverlay.setPoints(figure.getPoints()); pointOverlay.update(); }
@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); } } }
@Override public void updateOverlay(final AngleFigure figure, final OverlayView overlayView) { super.updateOverlay(figure, overlayView); final Overlay overlay = overlayView.getData(); assert overlay instanceof AngleOverlay; final AngleOverlay angleOverlay = (AngleOverlay) overlay; Point2D.Double figPt; final double[] ovPt = new double[angleOverlay.numDimensions()]; figPt = figure.getEndPoint1(); ovPt[0] = figPt.x; ovPt[1] = figPt.y; for (int i = 0; i < ovPt.length; i++) angleOverlay.setPoint1(ovPt[i], i); figPt = figure.getCenterPoint(); ovPt[0] = figPt.x; ovPt[1] = figPt.y; for (int i = 0; i < ovPt.length; i++) angleOverlay.setCenter(ovPt[i], i); figPt = figure.getEndPoint2(); ovPt[0] = figPt.x; ovPt[1] = figPt.y; for (int i = 0; i < ovPt.length; i++) angleOverlay.setPoint2(ovPt[i], i); angleOverlay.update(); }
@Override public void updateFigure(final OverlayView overlayView, final AngleFigure figure) { super.updateFigure(overlayView, figure); final Overlay overlay = overlayView.getData(); assert overlay instanceof AngleOverlay; final AngleOverlay angleOverlay = (AngleOverlay) overlay; double ptX, ptY; ptX = angleOverlay.getPoint1(0); ptY = angleOverlay.getPoint1(1); figure.setEndPoint1(ptX, ptY); ptX = angleOverlay.getCenter(0); ptY = angleOverlay.getCenter(1); figure.setCenterPoint(ptX, ptY); ptX = angleOverlay.getPoint2(0); ptY = angleOverlay.getPoint2(1); figure.setEndPoint2(ptX, ptY); }
@Override public void updateOverlay(final RectangleFigure figure, final OverlayView view) { super.updateOverlay(figure, view); final RectangleOverlay overlay = downcastOverlay(view.getData()); final Rectangle2D.Double bounds = figure.getBounds(); final double x = bounds.getMinX(); final double y = bounds.getMinY(); final double w = bounds.getWidth(); final double h = bounds.getHeight(); overlay.setOrigin(x, 0); overlay.setOrigin(y, 1); overlay.setExtent(w, 0); overlay.setExtent(h, 1); overlay.update(); toolService.reportRectangle(x, y, w, h); }