var circunference = (function() { // dashed line var tool = {}; var states = ["center", "radius"]; var state = undefined; var coordinates = [0, 0, 0, 0]; var points = [0, 0, 0]; function draw() { if (state == undefined) { state = states[0]; app.setStatus("Selecione o centro da CircunferĂȘncia"); } else if (state == states[0]) { var pos = app.pos(); coordinates[0] = pos.x; coordinates[1] = pos.y; state = states[1]; app.setStatus("Selecione o raio da CircunferĂȘncia"); } else if (state == states[1]) { var pos = app.pos(); coordinates[2] = pos.x; coordinates[3] = pos.y; var legA = coordinates[2] - coordinates[0]; legB = coordinates[3] - coordinates[1]; var radius = Math.sqrt(Math.pow(legA, 2) + Math.pow(legB, 2)); points = [coordinates[0], coordinates[1], radius]; var p = points.slice(); drawCircunference(p[0], p[1], p[2]); } } function drawCircunference(x, y, radius) { var layer = app.currentLayer(); var group = new Konva.Group({ draggable: true, resizeEnabled: false }); var circle = new Konva.Circle({ x: x, y: y, radius: radius, fill: "transparent", stroke: "black", strokeWidth: 1, strokeScaleEnabled: false, transformEnabled: true, draggable: false }); var point = new Konva.Circle({ x: x, y: y, radius: 5, fill: "#9bc364", stroke: "#9bc364", strokeWidth: 1, strokeScaleEnabled: false, draggable: false, resizeEnabled: false, transformEnabled: false }); group.add(circle); group.add(point); layer.add(group); app.stage.draw(); clearState(); app.clearSelectedTool(); app.setStatus(""); } function bootstrap() { app.tools.push(tool); } function click(id) { if (state == states[0]) { app.clearSelectedTool(); clearState(); return; } app.setSelectedTool(tool); state = states[0]; app.setStatus("Selecione o primeiro ponto no canvas"); } function clearState() { state = undefined; } tool = { id: "circunference", title: "CircunferĂȘncia", icon: "line", click: click, draw: draw, points: points, coordinates: coordinates, drawCircunference: drawCircunference }; bootstrap(); return { draw: draw, click: click }; })();