circumference.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. var circunference = (function() {
  2. // dashed line
  3. var tool = {};
  4. var states = ["center", "radius"];
  5. var state = undefined;
  6. var coordinates = [0, 0, 0, 0];
  7. var points = [0, 0, 0];
  8. function draw() {
  9. if (state == undefined) {
  10. state = states[0];
  11. app.setStatus("Selecione o centro da Circunferência");
  12. } else if (state == states[0]) {
  13. var pos = app.pos();
  14. coordinates[0] = pos.x;
  15. coordinates[1] = pos.y;
  16. state = states[1];
  17. app.setStatus("Selecione o raio da Circunferência");
  18. } else if (state == states[1]) {
  19. var layer = app.currentLayer();
  20. var pos = app.pos();
  21. coordinates[2] = pos.x;
  22. coordinates[3] = pos.y;
  23. var legA = coordinates[2] - coordinates[0];
  24. legB = coordinates[1] - coordinates[3];
  25. var radius = Math.sqrt(Math.pow(legA, 2)) + Math.sqrt(Math.pow(legB, 2));
  26. points = [coordinates[0], coordinates[1], radius];
  27. var p = points.slice();
  28. var circle = new Konva.Circle({
  29. x: p[0],
  30. y: p[1],
  31. radius: p[2],
  32. fill: "transparent",
  33. stroke: "black",
  34. strokeWidth: 1,
  35. strokeScaleEnabled: false,
  36. draggable: true
  37. });
  38. layer.add(circle);
  39. app.stage.draw();
  40. clearState();
  41. app.clearSelectedTool();
  42. app.setStatus("");
  43. }
  44. }
  45. function bootstrap() {
  46. app.tools.push(tool);
  47. }
  48. function click(id) {
  49. if (state == states[0]) {
  50. app.clearSelectedTool();
  51. clearState();
  52. return;
  53. }
  54. app.setSelectedTool(tool);
  55. state = states[0];
  56. app.setStatus("Selecione o primeiro ponto no canvas");
  57. }
  58. function clearState() {
  59. state = undefined;
  60. }
  61. tool = {
  62. id: "circunference",
  63. title: "Circunferência",
  64. icon: "line",
  65. click: click,
  66. draw: draw,
  67. points: points,
  68. coordinates: coordinates
  69. };
  70. bootstrap();
  71. return {
  72. draw: draw,
  73. click: click
  74. };
  75. })();