var startPosX1, startPosY1, midPosX1, midPosY1;
function tool_elbowArrowConnect() {
var tool = this;
this.started = false;
this.mousedown = function (ev) {
tool.started = true;
tool.x0 = startPosX1 = ev.offsetX;
tool.y0 = startPosY1 = ev.offsetY;
cPush();
};
this.mousemove = function (ev) {
if (!tool.started) {
return;
}
context.clearRect(0, 0, canvas.width, canvas.height);
context.strokeStyle = strokeColor;
var curPosX, curPosY;
curPosX = ev.offsetX;
curPosY = ev.offsetY;
if (curPosX > startPosX1) {
midPosX1 = ((curPosX - startPosX1) / 2) + startPosX1;
}
else if (startPosX > curPosX) {
midPosX1 = ((startPosX1 - curPosX) / 2) + curPosX;
}
if (curPosY > startPosY1) {
midPosY1 = ((curPosY - startPosY1) / 2) + startPosY1;
}
else if (startPosY1 > curPosY) {
midPosY1 = ((startPosY1 - curPosY) / 2) + curPosY;
}
context.beginPath();
context.moveTo(startPosX1, startPosY1);
context.lineTo(midPosX1, startPosY1);
context.strokeStyle = strokeColor;
context.stroke();
context.closePath();
context.beginPath();
context.moveTo(midPosX1, startPosY1);
context.lineTo(midPosX1, curPosY);
context.strokeStyle = strokeColor;
context.stroke();
context.closePath();
context.beginPath();
context.moveTo(midPosX1, curPosY);
context.lineTo(curPosX, curPosY);
context.strokeStyle = strokeColor;
context.stroke();
drawArrowhead1(midPosX1, curPosY, curPosX, curPosY);
};
this.mouseup = function (ev) {
if (tool.started) {
tool.mousemove(ev);
tool.started = false;
img_update();
}
};
}
var PI2 = Math.PI * 2;
function drawArrowhead1(x1, y1, x2, y2) {
var dx = x2 - x1;
var dy = y2 - y1;
var radians = (Math.atan2(dy, dx) + PI2) % PI2;
context.save();
context.lineWidth = 2;
context.beginPath();
context.translate(x2, y2);
context.rotate(radians);
context.moveTo(0, 0);
context.lineTo(-10, 6);
context.lineTo(-10, -6);
context.closePath();
context.fillStyle = strokeColor;
context.fill();
context.restore();
}