Advertisement
Guest User

Untitled

a guest
Aug 18th, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.23 KB | None | 0 0
  1. var c = document.getElementById("myCanvas");
  2. c.width = c.scrollWidth;
  3. c.height = c.scrollHeight;
  4. var WIDTH = c.width;
  5. var HEIGHT = c.height;
  6. var ctx = c.getContext("2d");
  7. var dragging = false;
  8. var dragStartLocation;
  9. var snapshot;
  10. ctx.lineCap = 'round';
  11. ctx.strokeStyle = 'blue';
  12. var fillBox = document.getElementById("fillBox");
  13. fillBox.checked = false;
  14. var canvasOffset = c.getBoundingClientRect();
  15. var offsetX = canvasOffset.left;
  16. var offsetY = canvasOffset.top;
  17. var startX,
  18. startY;
  19.  
  20. var rectangles = [];
  21. var selected = null;
  22.  
  23.  
  24. var bSlantLine = document.getElementById('slant-line');
  25. var bCircle = document.getElementById('circle');
  26. var bRemoveEvent = document.getElementById('removeEventListeners');
  27.  
  28. //ignore the addEvents namings, i had to make do with this
  29. bCircle.addEventListener('click', () => {
  30. c.addEventListener('mousedown', dragStart);
  31. c.addEventListener('mousedown', drag);
  32. c.addEventListener('mouseup', dragStop);
  33. });
  34.  
  35. //ignore the addEvents namings, i had to make do with this
  36. bSlantLine.addEventListener('click', () => {
  37. c.addEventListener('mousedown', holdIt);
  38. c.addEventListener('mousedown', moveIt);
  39. c.addEventListener('mouseup', stopIt);
  40. });
  41. bRemoveEvent.addEventListener('click', removeAdds);
  42. function removeAdds() {
  43. c.removeEventListener('mousedown', dragStart);
  44. c.removeEventListener('mousedown', drag);
  45. c.removeEventListener('mouseup', dragStop);
  46. }
  47. function getCanvasCoordinates(event) {
  48. var x = event.clientX - offsetX,
  49. y = event.clientY - offsetY;
  50.  
  51. return { x: x, y: y };
  52. }
  53. function contains(px, py, px1, py1, positionX, positionY) {
  54. if((px <= positionX) && (px1 >= positionX) && (py <= positionY) && (py1 >= positionY))
  55. {return true;}
  56. else{return false;}
  57. }
  58. function drawRecObj() {
  59. var j = rectangles.length;
  60. for (var i = 0; i < rectangles.length; i++) {
  61. ctx.rect(rectangles[j - 1].x, rectangles[j - 1].y, rectangles[j - 1].w, rectangles[j - 1].h);
  62. console.log('no:' + i);
  63. ctx.stroke();
  64. }
  65. }
  66. function drawRectangle(position) {
  67. var width = (position.x - dragStartLocation.x);
  68. var height = (position.y - dragStartLocation.y);
  69. rectangles.push({
  70. x: dragStartLocation.x, y: dragStartLocation.y, w: width, h: height
  71. });
  72. ctx.beginPath();
  73. drawRecObj();
  74. }
  75. function dragStart(event) {
  76. dragging = true;
  77. dragStartLocation = getCanvasCoordinates(event);
  78. takeSnapshot();
  79. c.style.cursor = "crosshair";
  80.  
  81. }
  82. function drag(event) {
  83. var position;
  84. if (dragging === true) {
  85. restoreSnapshot();
  86. position = getCanvasCoordinates(event);
  87. }
  88. }
  89. function dragStop(event) {
  90. dragging = false;
  91. restoreSnapshot();
  92. var position = getCanvasCoordinates(event);
  93. drawRectangle(position);
  94. c.style.cursor = "default";
  95. }
  96. function holdIt(e) {
  97. var mouse = getCanvasCoordinates(e);
  98. var mx = mouse.x;
  99. var my = mouse.y;
  100. var l = rectangles.length;
  101. for (var i = l - 1; i >= 0; i--) {
  102. var rx = rectangles[i].x;
  103. var ry = rectangles[i].y;
  104. var rw = rectangles[i].w + rectangles[i].x;
  105. var rh = rectangles[i].h + rectangles[i].y;
  106. if (contains(rx, ry, rw, rh, mx, my)) {
  107. var myRectangles = rectangles[i];
  108. startX = mx - myRectangles.x;
  109. startY = my - myRectangles.y;
  110. selected = myRectangles;
  111. }
  112. }
  113. c.style.cursor = "pointer";
  114. }
  115. function moveIt(e) {
  116. if (selected != null) {
  117. var mouse = getCanvasCoordinates(e);
  118. var mx = mouse.x;
  119. var my = mouse.y;
  120. selected.x = mouse.x - startX;
  121. selected.y = mouse.y - startX;
  122. //use valid that was in SA
  123. drawRecObj();
  124. }
  125. }
  126. function stopIt(e) {
  127. selected = null;
  128. }
  129. <canvas id='myCanvas'>Your browser doesn't support canvas</canvas>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement