|
@@ -0,0 +1,89 @@
|
|
|
+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 layer = app.currentLayer();
|
|
|
+ var pos = app.pos();
|
|
|
+ coordinates[2] = pos.x;
|
|
|
+ coordinates[3] = pos.y;
|
|
|
+ var legA = coordinates[2] - coordinates[0];
|
|
|
+ legB = coordinates[1] - coordinates[3];
|
|
|
+ var radius = Math.sqrt(Math.pow(legA, 2)) + Math.sqrt(Math.pow(legB, 2));
|
|
|
+ points = [coordinates[0], coordinates[1], radius];
|
|
|
+ var p = points.slice();
|
|
|
+ console.log(p);
|
|
|
+ var circle = new Konva.Circle({
|
|
|
+ x: p[0],
|
|
|
+ y: p[1],
|
|
|
+ radius: p[2],
|
|
|
+ fill: "transparent",
|
|
|
+ stroke: "black",
|
|
|
+ strokeWidth: 1,
|
|
|
+ strokeScaleEnabled: false
|
|
|
+ });
|
|
|
+
|
|
|
+ layer.add(circle);
|
|
|
+ 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
|
|
|
+ };
|
|
|
+
|
|
|
+ bootstrap();
|
|
|
+
|
|
|
+ return {
|
|
|
+ draw: draw,
|
|
|
+ click: click
|
|
|
+ };
|
|
|
+})();
|