circumference.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. console.log(p);
  29. var circle = new Konva.Circle({
  30. x: p[0],
  31. y: p[1],
  32. radius: p[2],
  33. fill: "transparent",
  34. stroke: "black",
  35. strokeWidth: 1,
  36. strokeScaleEnabled: false,
  37. draggable: true,
  38. });
  39. layer.add(circle);
  40. app.stage.draw();
  41. clearState();
  42. app.clearSelectedTool();
  43. app.setStatus("");
  44. }
  45. }
  46. function bootstrap() {
  47. app.tools.push(tool);
  48. }
  49. function click(id) {
  50. if (state == states[0]) {
  51. app.clearSelectedTool();
  52. clearState();
  53. return;
  54. }
  55. app.setSelectedTool(tool);
  56. state = states[0];
  57. app.setStatus("Selecione o primeiro ponto no canvas");
  58. }
  59. function clearState() {
  60. state = undefined;
  61. }
  62. tool = {
  63. id: "circunference",
  64. title: "Circunferência",
  65. icon: "line",
  66. click: click,
  67. draw: draw,
  68. points: points,
  69. coordinates: coordinates
  70. };
  71. bootstrap();
  72. return {
  73. draw: draw,
  74. click: click
  75. };
  76. })();