circumference.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  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 pos = app.pos();
  20. coordinates[2] = pos.x;
  21. coordinates[3] = pos.y;
  22. var legA = coordinates[2] - coordinates[0];
  23. legB = coordinates[3] - coordinates[1];
  24. var radius = Math.sqrt(Math.pow(legA, 2) + Math.pow(legB, 2));
  25. points = [coordinates[0], coordinates[1], radius];
  26. var p = points.slice();
  27. drawCircunference(p[0], p[1], p[2]);
  28. }
  29. }
  30. function drawCircunference(x, y, radius) {
  31. var layer = app.currentLayer();
  32. var group = new Konva.Group({
  33. draggable: true,
  34. resizeEnabled: false
  35. });
  36. var circle = new Konva.Circle({
  37. x: x,
  38. y: y,
  39. radius: radius,
  40. fill: "transparent",
  41. stroke: "black",
  42. strokeWidth: 1,
  43. strokeScaleEnabled: false,
  44. transformEnabled: true,
  45. draggable: false
  46. });
  47. var point = new Konva.Circle({
  48. x: x,
  49. y: y,
  50. radius: 5,
  51. fill: "#9bc364",
  52. stroke: "#9bc364",
  53. strokeWidth: 1,
  54. strokeScaleEnabled: false,
  55. draggable: false,
  56. resizeEnabled: false,
  57. transformEnabled: false
  58. });
  59. group.add(circle);
  60. group.add(point);
  61. layer.add(group);
  62. app.stage.draw();
  63. clearState();
  64. app.clearSelectedTool();
  65. app.setStatus("");
  66. }
  67. function bootstrap() {
  68. app.tools.push(tool);
  69. }
  70. function click(id) {
  71. if (state == states[0]) {
  72. app.clearSelectedTool();
  73. clearState();
  74. return;
  75. }
  76. app.setSelectedTool(tool);
  77. state = states[0];
  78. app.setStatus("Selecione o primeiro ponto no canvas");
  79. }
  80. function clearState() {
  81. state = undefined;
  82. }
  83. tool = {
  84. id: "circunference",
  85. title: "Circunferência",
  86. icon: "line",
  87. click: click,
  88. draw: draw,
  89. points: points,
  90. coordinates: coordinates,
  91. drawCircunference: drawCircunference
  92. };
  93. bootstrap();
  94. return {
  95. draw: draw,
  96. click: click
  97. };
  98. })();