public int getIndexOfNewPoint(int x, int y, int tol) { Rectangle rect = new Rectangle(x - tol / 2, y - tol / 2, tol, tol); List<mxPoint> pts = getAbsolutePoints(); int length = pts.size(); mxPoint start, end; start = pts.get(0); for (int i = 1; i < length; i++) { end = pts.get(i); if (rect.intersectsLine(start.getX(), start.getY(), end.getX(), end.getY())) return i; start = end; } return -1; }
@Override public mxPoint paintMarker( mxGraphics2DCanvas canvas, mxCellState state, String type, mxPoint pe, double nx, double ny, double size, boolean source) { // Polygon poly = new Polygon(); // poly.addPoint((int) Math.round(pe.getX()), (int) Math.round(pe.getY())); // poly.addPoint((int) Math.round(pe.getX() - nx - ny / 2), (int) Math.round(pe.getY() - // ny + nx / 2)); // poly.addPoint((int) Math.round(pe.getX() + ny / 2 - nx), (int) Math.round(pe.getY() - // ny - nx / 2)); // canvas.getGraphics().draw(poly); // Color prev = canvas.getGraphics().getColor(); // canvas.getGraphics().setColor(Color.white); // canvas.getGraphics().fillOval( (int)(pe.getX() -nx - RADIUS), (int)(pe.getY() -ny - RADIUS), // RADIUS * 2 , RADIUS * 2); // canvas.getGraphics().setColor(prev); System.out.println("RENDERING !!!"); canvas .getGraphics() .drawOval( (int) (pe.getX() - nx - RADIUS), (int) (pe.getY() - ny - RADIUS), RADIUS * 2, RADIUS * 2); return new mxPoint(-nx, -ny); }
/** * Draws the given lines as segments between all points of the given list of mxPoints. * * @param pts List of points that define the line. * @param style Style to be used for painting the line. */ public void drawLine(List<mxPoint> pts, Map<String, Object> style) { String strokeColor = mxUtils.getString(style, mxConstants.STYLE_STROKECOLOR); int strokeWidth = (int) (mxUtils.getInt(style, mxConstants.STYLE_STROKEWIDTH, 1) * scale); if (strokeColor != null && strokeWidth > 0) { mxPoint last = pts.get(0); for (int i = 1; i < pts.size(); i++) { mxPoint pt = pts.get(i); drawSegment( (int) last.getX(), (int) last.getY(), (int) pt.getX(), (int) pt.getY(), strokeColor, strokeWidth); last = pt; } } }