AllenYuan

draw.js colorpicker

Apr 30th, 2020
635
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $(document).ready(function() {
  2.   const canvas = id("mycanvas");
  3.   console.log(canvas);
  4.   let ctx = canvas.getContext("2d");
  5.   // get context to draw on canvas
  6.   let DIMENSION = 25;
  7.   let WIDTH = canvas.width;
  8.   let HEIGHT = canvas.height;
  9.   let PIXELSIZE = WIDTH / DIMENSION;
  10.   let selectedColor = '#222244';
  11.   let enabled = true;
  12.   // records the drawing on this square
  13.   let filledPixels = {};
  14.  
  15.   ctx.strokeStyle = 'rgba(0,0,0,0.1)';
  16.   for (let i = 0; i < DIMENSION; ++i) {
  17.     x = Math.floor(i * WIDTH / DIMENSION);
  18.     ctx.beginPath();
  19.     ctx.moveTo(x, 0);
  20.     ctx.lineTo(x, HEIGHT);
  21.     ctx.stroke();
  22.  
  23.     y = Math.floor(i * HEIGHT / DIMENSION);
  24.     ctx.beginPath();
  25.     ctx.moveTo(0, y);
  26.     ctx.lineTo(WIDTH, y);
  27.     ctx.stroke();
  28.   }
  29.   const events = ['mousedown', 'mousemove', 'touchmove', 'touchstart'];
  30.   for (let i = 0; i < events.length; i++) {
  31.     canvas.addEventListener(events[i], mouseFill);
  32.   }
  33.   function mouseFill(e) {
  34.     e.preventDefault(); // disabled touch scrolling
  35.  
  36.     const rect = id('mycanvas');
  37.     let offsetX = e.offsetX;
  38.     let offsetY = e.offsetY;
  39.  
  40.     // don't paint if user isn't holding mouse down or picker is open
  41.     if (!enabled) return;
  42.     if (e.which != 1) return;
  43.     console.log('mouse event', e);
  44.     console.log('filledpixels', filledPixels);
  45.  
  46.     pixel = [Math.floor(offsetX / PIXELSIZE), Math.floor(offsetY / PIXELSIZE)];
  47.     fillPixel(pixel);
  48.   }
  49.  
  50.   function fillPixel(pixel) {
  51.     let key = `${pixel[0]},${pixel[1]}`;
  52.     filledPixels[key] = selectedColor;
  53.  
  54.     ctx.fillStyle = selectedColor;
  55.     ctx.fillRect(pixel[0] * PIXELSIZE, pixel[1] * PIXELSIZE, PIXELSIZE - 1, PIXELSIZE - 1);
  56.   }
  57.  
  58.   // configure pickr lib and attach it to #Picker
  59.   const PICKR = Pickr.create({
  60.     el: '#picker',
  61.     comparison: false,
  62.     components: {
  63.       opacity: false,
  64.       hue: true,
  65.       palette: true,
  66.       interaction: {
  67.         input: true,
  68.       }
  69.     }
  70.   });
  71.  
  72.   console.log('pickr', PICKR);
  73.  
  74.   // on open set default color to selected
  75.   PICKR.on('init', function () {
  76.     PICKR.setColor(selectedColor);
  77.   });
  78.   // disable coloring
  79.   PICKR.on('show', function () {
  80.     enabled = false;
  81.   });
  82.   // after choosing color reenable coloring
  83.   PICKR.on('hide', function () {
  84.     setTimeout(function () {
  85.       enabled = true;
  86.     }, 300);
  87.   });
  88.   // change selected color
  89.   PICKR.on('change', function () {
  90.     selectedColor = PICKR.getColor().toHEXA().toString();
  91.   });
  92.  
  93.   id('pickerButton').addEventListener('click', () => PICKR.show());
  94.  
  95.   function id(id) {
  96.     return document.getElementById(id);
  97.   }
  98. });
Advertisement
Add Comment
Please, Sign In to add comment