@Nullable protected BezierPath.Node getBezierNode() { return getOwner().getNodeCount() > index ? getOwner().getNode(index) : null; }
@Nullable protected BezierPath.Node getBezierNode() { return getBezierFigure().getNodeCount() > index ? getBezierFigure().getNode(index) : null; }
@Override public void trackStart(Point anchor, int modifiersEx) { BezierFigure figure = getOwner(); view.getDrawing().fireUndoableEditHappened(edit = new CompositeEdit("Punkt verschieben")); oldNode = figure.getNode(index); }
@Nullable protected BezierPath.Node getBezierNode() { int index = getBezierNodeIndex(); return getBezierFigure().getNodeCount() > index ? getBezierFigure().getNode(index) : null; }
@Override public void trackStart(Point anchor, int modifiersEx) { BezierFigure figure = getOwner(); view.getDrawing().fireUndoableEditHappened(edit = new CompositeEdit("Punkt verschieben")); oldNode = figure.getNode(index); fireHandleRequestSecondaryHandles(); }
@Override public Collection<Handle> createSecondaryHandles() { BezierFigure f = getOwner(); LinkedList<Handle> list = new LinkedList<Handle>(); BezierPath.Node v = f.getNode(index); if ((v.mask & BezierPath.C1_MASK) != 0 && (index != 0 || f.isClosed())) { list.add(new BezierControlPointHandle(f, index, 1, getTransformOwner())); } if ((v.mask & BezierPath.C2_MASK) != 0 && (index < f.getNodeCount() - 1 || f.isClosed())) { list.add(new BezierControlPointHandle(f, index, 2, getTransformOwner())); } if (index > 0 || f.isClosed()) { int i = (index == 0) ? f.getNodeCount() - 1 : index - 1; v = f.getNode(i); if ((v.mask & BezierPath.C2_MASK) != 0) { list.add(new BezierControlPointHandle(f, i, 2, getTransformOwner())); } } if (index < f.getNodeCount() - 1 || f.isClosed()) { int i = (index == f.getNodeCount() - 1) ? 0 : index + 1; v = f.getNode(i); if ((v.mask & BezierPath.C1_MASK) != 0) { list.add(new BezierControlPointHandle(f, i, 1, getTransformOwner())); } } return list; }
@Override public void keyPressed(KeyEvent evt) { final BezierFigure f = getOwner(); BezierPath.Node oldNode = f.getNode(index); f.setPoint(index, controlPointIndex, new Point2D.Double(oldNode.x[controlPointIndex], oldNode.y[controlPointIndex] - 1d)); f.changed(); view.getDrawing().fireUndoableEditHappened(new BezierNodeEdit(f, index, oldNode, f.getNode(index))); evt.consume(); break; f.setPoint(index, controlPointIndex, new Point2D.Double(oldNode.x[controlPointIndex], oldNode.y[controlPointIndex] + 1d)); f.changed(); view.getDrawing().fireUndoableEditHappened(new BezierNodeEdit(f, index, oldNode, f.getNode(index))); evt.consume(); break; f.setPoint(index, controlPointIndex, new Point2D.Double(oldNode.x[controlPointIndex] - 1d, oldNode.y[controlPointIndex])); f.changed(); view.getDrawing().fireUndoableEditHappened(new BezierNodeEdit(f, index, oldNode, f.getNode(index))); evt.consume(); break; f.setPoint(index, controlPointIndex, new Point2D.Double(oldNode.x[controlPointIndex] + 1d, oldNode.y[controlPointIndex])); f.changed(); view.getDrawing().fireUndoableEditHappened(new BezierNodeEdit(f, index, oldNode, f.getNode(index))); evt.consume(); break;
int index = getBezierNodeIndex(); BezierFigure f = getBezierFigure(); BezierPath.Node v = f.getNode(index); if ((v.mask & BezierPath.C1_MASK) != 0 && (index != 0 || f.isClosed())) { v = f.getNode(i); if ((v.mask & BezierPath.C2_MASK) != 0) { list.add(new BezierControlPointHandle(f, i, 2)); v = f.getNode(i); if ((v.mask & BezierPath.C1_MASK) != 0) { list.add(new BezierControlPointHandle(f, i, 1));
final int index = splitSegment(p, 5f / view.getScaleFactor()); if (index != -1) { final BezierPath.Node newNode = getNode(index); fireUndoableEditHappened(new AbstractUndoableEdit() {
@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); }
final BezierFigure figure = getBezierFigure(); BezierPath.Node oldValue = (BezierPath.Node) oldNode.clone(); BezierPath.Node newValue = figure.getNode(index); if ((modifiersEx & (InputEvent.META_DOWN_MASK | InputEvent.CTRL_DOWN_MASK | InputEvent.ALT_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK)) != 0) { figure.willChange();
@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 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 trackStep(Point anchor, Point lead, int modifiersEx) { BezierFigure figure = getOwner(); figure.willChange(); Point2D.Double p = view.getConstrainer().constrainPoint(view.viewToDrawing(lead)); if (getTransformOwner().get(TRANSFORM) != null) { try { getTransformOwner().get(TRANSFORM).inverseTransform(p, p); } catch (NoninvertibleTransformException ex) { ex.printStackTrace(); } } BezierPath.Node n = figure.getNode(index); //fireAreaInvalidated(n); n.moveTo(p); //fireAreaInvalidated(n); figure.setNode(index, n); figure.changed(); }
protected void writePoints(DOMOutput out) throws IOException { out.openElement("points"); if (isClosed()) { out.addAttribute("closed", true); } for (int i = 0, n = getNodeCount(); i < n; i++) { BezierPath.Node node = getNode(i); out.openElement("p"); out.addAttribute("mask", node.mask, 0); out.addAttribute("colinear", true); out.addAttribute("x", node.x[0]); out.addAttribute("y", node.y[0]); out.addAttribute("c1x", node.x[1], node.x[0]); out.addAttribute("c1y", node.y[1], node.y[0]); out.addAttribute("c2x", node.x[2], node.x[0]); out.addAttribute("c2y", node.y[2], node.y[0]); out.closeElement(); } out.closeElement(); }
final BezierFigure f = getOwner(); BezierPath.Node oldValue = (BezierPath.Node) oldNode.clone();; BezierPath.Node newValue = f.getNode(index);
final Node node = figure.getNode(i); final double[] position = new double[] { node.x[0], node.y[0] }; if (roi.getVertexCount() == i) {
BezierPath.Node v = f.getNode(index); if (v.mask == 0 || index == 0 && v.mask == BezierPath.C1_MASK && !isClosed ||