Pixel.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. var canvas;
  2. const draw = function(ctx, source) {
  3. const img = new Image();
  4. img.onload = function() {
  5. ctx.drawImage(img, 0, 0);
  6. };
  7. img.src = source;
  8. };
  9. const dotProduct = function(U, V) {
  10. return U.x * V.x + U.y * V.y;
  11. };
  12. const mouseMove = function(e) {
  13. canvas.mouse.x = e.clientX;
  14. canvas.mouse.y = e.clientY;
  15. const AB = { x: canvas.vertex.b.x - canvas.vertex.a.x, y: canvas.vertex.b.y - canvas.vertex.a.y };
  16. const AM = { x: canvas.mouse.x - canvas.vertex.a.x, y: canvas.mouse.y - canvas.vertex.a.y };
  17. const BC = { x: canvas.vertex.c.x - canvas.vertex.b.x, y: canvas.vertex.c.y - canvas.vertex.b.y };
  18. const BM = { x: canvas.mouse.x - canvas.vertex.b.x, y: canvas.mouse.y - canvas.vertex.b.y };
  19. canvas.mouse.isInside = (0 <= dotProduct(AB, AM) && dotProduct(AB, AM) <= dotProduct(AB, AB))
  20. && (0 <= dotProduct(BC, BM) && dotProduct(BC, BM) <= dotProduct(BC, BC));
  21. console.log("Dragging: " + canvas.isDragging);
  22. console.log("Inside: " + canvas.mouse.isInside);
  23. }
  24. const mouseDown = function(e) {
  25. canvas.isDragging = canvas.mouse.isInside;
  26. };
  27. const mouseUp = function(e) {
  28. canvas.isDragging = false;
  29. };
  30. const init = function() {
  31. canvas = {
  32. element: document.getElementById("canvas"),
  33. get context() { return canvas.element.getContext(); },
  34. isDragging: false,
  35. mouse: {
  36. isInside: false,
  37. x: 0,
  38. y: 0
  39. },
  40. get boundary() { return canvas.element.getBoundingClientRect(); },
  41. vertex: {
  42. get a() { return { x: canvas.boundary.top, y: canvas.boundary.left }; },
  43. get b() { return { x: canvas.boundary.top, y: canvas.boundary.right }; },
  44. get c() { return { x: canvas.boundary.bottom, y: canvas.boundary.left }; },
  45. get d() { return { x: canvas.boundary.bottom, y: canvas.boundary.right }; }
  46. }
  47. }
  48. canvas.element.setAttribute("width", 500);//window.getComputedStyle(document.body).getPropertyValue("width"));
  49. canvas.element.setAttribute("height", 500);//window.getComputedStyle(document.body).getPropertyValue("height"));
  50. document.addEventListener("mousemove", mouseMove);
  51. document.addEventListener("mouseup", mouseUp);
  52. document.addEventListener("mousedown", mouseDown);
  53. };