Advertisement
Guest User

Untitled

a guest
Apr 7th, 2020
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class Canvas {
  2.   InitThis() {
  3.     window.requestAnimFrame = (function (callback) {
  4.       return window.requestAnimationFrame ||
  5.         window.webkitRequestAnimationFrame ||
  6.         window.mozRequestAnimationFrame ||
  7.         window.oRequestAnimationFrame ||
  8.         window.msRequestAnimaitonFrame ||
  9.         function (callback) {
  10.           window.setTimeout(callback, 1000 / 60);
  11.         };
  12.     })();
  13.  
  14.     function getMousePos(canvasDom, mouseEvent) {
  15.       let rect = canvasDom.getBoundingClientRect();
  16.       return {
  17.         x: mouseEvent.clientX - rect.left,
  18.         y: mouseEvent.clientY - rect.top
  19.       };
  20.     }
  21.  
  22.     function getTouchPos(canvasDom, touchEvent) {
  23.       let rect = canvasDom.getBoundingClientRect();
  24.       return {
  25.         x: touchEvent.touches[0].clientX - rect.left,
  26.         y: touchEvent.touches[0].clientY - rect.top
  27.       };
  28.     }
  29.  
  30.     function renderCanvas() {
  31.       if (drawing) {
  32.         ctx.moveTo(lastPos.x, lastPos.y);
  33.         ctx.lineTo(mousePos.x, mousePos.y);
  34.         ctx.stroke();
  35.         lastPos = mousePos;
  36.       }
  37.     }
  38.  
  39.     let canvas = document.getElementById('signature');
  40.     let ctx = canvas.getContext('2d');
  41.     ctx.strokeStyle = '#222222';
  42.     ctx.lineWidth = 2;
  43.  
  44.     let drawing = false;
  45.     let mousePos = {
  46.       x: 0,
  47.       y: 0
  48.     };
  49.     let lastPos = mousePos;
  50.  
  51.     canvas.addEventListener('mousedown', function (e) {
  52.       drawing = true;
  53.       lastPos = getMousePos(canvas, e);
  54.     }, false);
  55.  
  56.     canvas.addEventListener('mouseup', function (e) {
  57.       drawing = false;
  58.     }, false);
  59.  
  60.     canvas.addEventListener('mousemove', function (e) {
  61.       mousePos = getMousePos(canvas, e);
  62.     }, false);
  63.  
  64.     // Gestion du tactile
  65.     canvas.addEventListener('touchmove', function (e) {
  66.       let touch = e.touches[0];
  67.       let me = new MouseEvent('mousemove', {
  68.         clientX: touch.clientX,
  69.         clientY: touch.clientY
  70.       });
  71.       canvas.dispatchEvent(me);
  72.     }, false);
  73.  
  74.     canvas.addEventListener('touchstart', function (e) {
  75.       mousePos = getTouchPos(canvas, e);
  76.       let touch = e.touches[0];
  77.       let me = new MouseEvent('mousedown', {
  78.         clientX: touch.clientX,
  79.         clientY: touch.clientY
  80.       });
  81.       canvas.dispatchEvent(me);
  82.     }, false);
  83.  
  84.     canvas.addEventListener('touchend', function (e) {
  85.       let me = new MouseEvent('mouseup', {});
  86.       canvas.dispatchEvent(me);
  87.     }, false);
  88.  
  89.     // Eviter le scroll lors du touch
  90.     document.body.addEventListener('touchstart', function (e) {
  91.       if (e.target === canvas) {
  92.         e.preventDefault();
  93.       }
  94.     }, { passive: false });
  95.     document.body.addEventListener('touchend', function (e) {
  96.       if (e.target === canvas) {
  97.         e.preventDefault();
  98.       }
  99.     }, { passive: false });
  100.     document.body.addEventListener('touchmove', function (e) {
  101.       if (e.target === canvas) {
  102.         e.preventDefault();
  103.       }
  104.     }, { passive: false });
  105.  
  106.     (function drawLoop() {
  107.       requestAnimFrame(drawLoop);
  108.       renderCanvas();
  109.     })();
  110.  
  111.     function clearCanvas() {
  112.       canvas.width = canvas.width;
  113.     }
  114.  
  115.     let clearBtn = document.getElementById('clear');
  116.     clearBtn.addEventListener('click', function (e) {
  117.       clearCanvas();
  118.     }, false);
  119.  
  120.   }
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement