package com.baselet.element.old.activity;
import java.awt.Graphics2D;
import java.awt.Point;
import com.baselet.control.enums.Direction;
public class Connector {
private Element e1, e2;
private Graphics2D graphics;
public static void drawArrow(Graphics2D graphics, float zoom, int x1, int y1, int x2, int y2) {
double ax1, ax2, ay1, ay2;
int ax_1, ax_2, ay_1, ay_2;
double angle = Math.atan2(y2 - y1, x2 - x1);
ax1 = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)) - (int) (7 * zoom);
ax2 = ax1;
ay1 = -(int) (4 * zoom);
ay2 = (int) (5 * zoom);
ax_1 = (int) (Math.cos(angle) * ax1 - Math.sin(angle) * ay1) + x1;
ay_1 = (int) (Math.sin(angle) * ax1 + Math.cos(angle) * ay1) + y1;
ax_2 = (int) (Math.cos(angle) * ax2 - Math.sin(angle) * ay2) + x1;
ay_2 = (int) (Math.sin(angle) * ax2 + Math.cos(angle) * ay2) + y1;
graphics.drawLine(x1, y1, x2, y2);
graphics.drawLine(x2, y2, ax_1, ay_1);
graphics.drawLine(x2, y2, ax_2, ay_2);
}
public Connector(Graphics2D g, Element e1, Element e2) {
graphics = g;
this.e1 = e1;
this.e2 = e2;
}
public void paint() {
if (e1.connectOut() && e2.connectIn()) {
Point c2 = e2.getConnect(Direction.UP);
Point c1 = e1.getConnect(Direction.DOWN);
if (c1 != null && c2 != null) {
if (!c1.equals(c2)) {
if (e1.arrowOut() && e2.arrowIn()) {
float zoom = e1.getHandler().getZoomFactor();
Connector.drawArrow(graphics, zoom, c1.x, c1.y, c2.x, c2.y);
}
else {
graphics.drawLine(c1.x, c1.y, c2.x, c2.y);
}
}
}
}
}
}