Advertisement
avr39-ripe

colorPicker.js

Apr 24th, 2020
461
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*function wheelR(event)
  2. {
  3.     event.preventDefault();
  4.     colorR += event.deltaY * -0.1;
  5.     colorR = Math.min(Math.max(0, colorR),255);
  6.     rgbContainer.style.backgroundColor = `rgb(${colorR},${colorG},${colorB})`;
  7.     console.log(`rgb(${colorR},${colorG},${colorB})`);
  8. };
  9. function wheelG(event)
  10. {
  11.     event.preventDefault();
  12.     colorG += event.deltaY * -0.1;
  13.     colorG = Math.min(Math.max(0, colorG),255);
  14.     rgbContainer.style.backgroundColor = `rgb(${colorR},${colorG},${colorB})`;
  15.     console.log(`rgb(${colorR},${colorG},${colorB})`);
  16. };
  17.  
  18. function wheelB(event)
  19. {
  20.     event.preventDefault();
  21.     colorB += event.deltaY * -0.1;
  22.     colorB = Math.min(Math.max(0, colorB),255);
  23.     rgbContainer.style.backgroundColor = `rgb(${colorR},${colorG},${colorB})`;
  24.     console.log(`rgb(${colorR},${colorG},${colorB})`);
  25. };*/
  26.  
  27. //red.addEventListener('wheel', wheelR);
  28. //green.addEventListener('wheel', wheelG);
  29. //blue.addEventListener('wheel', wheelB);
  30.  
  31. /*
  32. let colorR = 0;
  33. let colorG = 0;
  34. let colorB = 0;
  35.  
  36. function wheel(event)
  37. {
  38.     event.preventDefault();
  39.     let targetId = event.target.id;
  40.     console.log(targetId);
  41.  
  42.     if (targetId === 'red')
  43.     {
  44.         colorR += event.deltaY * -0.1;
  45.         colorR = Math.min(Math.max(0, colorR),255);
  46.     }
  47.     if (targetId === 'green')
  48.     {
  49.         colorG += event.deltaY * -0.1;
  50.         colorG = Math.min(Math.max(0, colorG),255);
  51.     }
  52.     if (targetId === 'blue')
  53.     {
  54.         colorB += event.deltaY * -0.1;
  55.         colorB = Math.min(Math.max(0, colorB),255);
  56.     }
  57.     rgbContainer.style.backgroundColor = `rgb(${colorR},${colorG},${colorB})`;
  58.     console.log(`rgb(${colorR},${colorG},${colorB})`);
  59. };
  60.  
  61. rgbContainer.addEventListener('wheel', wheel);
  62. */
  63.  
  64. class ColorPicker
  65. {
  66.     constructor()
  67.     {
  68.         this._red = 0;
  69.         this._green = 0;
  70.         this._blue = 0;
  71.         this._active = 'none';
  72.     }
  73.  
  74.     static colorElements = ['red','green','blue'];
  75.     static inElements = ['inRed','inGreen','inBlue'];
  76.  
  77.     get red() {return this._red;};
  78.     get green() {return this._green;};
  79.     get blue() {return this._blue;};
  80.     get active() {return this._active;};
  81.  
  82.     set red(val) { this._red = Math.min(Math.max(0, val),255); this._updateColor() };
  83.     set green(val) { this._green = Math.min(Math.max(0, val),255); this._updateColor() };
  84.     set blue(val) { this._blue = Math.min(Math.max(0, val),255); this._updateColor() };
  85.     set active(val) { this._active = val; this._setActive(this._active); };
  86.  
  87.     _changeActiveColor(val)
  88.     {
  89.         let color = this.active === 'none' ? 'red' : this.active;
  90.         this[color] += val;
  91.         this._updateNumbers();
  92.     }
  93.  
  94.     _cycleActive(dir=1)
  95.     {
  96.         if (this.active === 'none') { this.active = 'red'; return;};
  97.         let activeId = ColorPicker.colorElements.indexOf(this.active);
  98.         activeId += dir;
  99.         if (activeId > 2) { activeId = 0;};
  100.         if (activeId < 0) { activeId = 2;};
  101.         this.active = ColorPicker.colorElements[activeId];
  102.     }
  103.  
  104.     _setActive(color)
  105.     {
  106.         for (let colorId of ColorPicker.colorElements)
  107.         {
  108.             if (colorId != color ) { document.getElementById(colorId).style.borderStyle = 'solid'; };      
  109.             if (colorId == color ) { document.getElementById(colorId).style.borderStyle = 'dotted'; };
  110.         }
  111.     }
  112.  
  113.     _updateColor()
  114.     {
  115.         let rgbStr = `rgb(${this.red},${this.green},${this.blue})`;
  116.         rgbContainer.style.backgroundColor = rgbStr;
  117.         //console.log(rgbStr);
  118.     }
  119.  
  120.     _updateNumbers()
  121.     {
  122.         inRed.value = this.red;
  123.         inGreen.value = this.green;
  124.         inBlue.value = this.blue;
  125.     }
  126.  
  127.     handleEvent(event)
  128.     {
  129.         //console.log(event.target.id);
  130.         this[`on${event.type[0].toUpperCase() + event.type.slice(1)}`](event);
  131.     }
  132.  
  133.     onWheel(event)
  134.     {
  135.         let color = event.target.id;
  136.         //console.log(color);
  137.         event.preventDefault();
  138.         if (ColorPicker.colorElements.includes(color))
  139.         {
  140.             this[color] += Math.floor( event.deltaY * -0.1 );
  141.         }
  142.         if ( color === 'rgbContainer')
  143.         {
  144.             for(let colorId of ColorPicker.colorElements)
  145.             {
  146.                 this[colorId] += Math.floor( event.deltaY * -0.1 );
  147.             }
  148.         }
  149.         this._updateNumbers();
  150.     }
  151.  
  152.     onChange(event)
  153.     {
  154.         let inColor = event.target.id;
  155.         console.log(inColor);
  156.         if (ColorPicker.inElements.includes(inColor))
  157.         {
  158.             let color = inColor.slice(2).toLowerCase();
  159.             this[color] = parseInt(event.target.value);
  160.         }
  161.     }
  162.  
  163.     onMousedown(event)
  164.     {
  165.         let clickerClassList = event.target.classList;
  166.         if ( clickerClassList.contains('colorBlock'))
  167.         {
  168.             let color = event.target.id;
  169.             event.preventDefault();
  170.             if (event.button === 0 ) { this[color] = 0; this._updateNumbers();};
  171.             if (event.button === 1 ) { this[color] = 255; this._updateNumbers();};
  172.         }
  173.     }
  174.  
  175.     onClick(event)
  176.     {
  177.         let clickerClassList = event.target.classList;
  178.         if ( clickerClassList.contains('changeButtons'))
  179.         {
  180.             let action = event.target.id[0];
  181.             let color = event.target.id.slice(1).toLowerCase();
  182.             if ( action === 'p') { this[color] += 15; };
  183.             if ( action === 'm') { this[color] -= 15; };
  184.             this._updateNumbers();
  185.         }
  186.         this._cycleActive();
  187.     }
  188.  
  189.     onMouseover(event)
  190.     {
  191.         let clickerClassList = event.target.classList;
  192.         if ( clickerClassList.contains('colorBlock'))
  193.         {
  194.             let color = event.target.id;
  195.             this.active = color;
  196.         }
  197.     }
  198.  
  199.     onMouseout(event)
  200.     {
  201.         let clickerClassList = event.target.classList;
  202.         if ( clickerClassList.contains('colorBlock'))
  203.         {
  204.             let color = event.target.id;
  205.             this.active = 'none';
  206.         }
  207.     }
  208.  
  209.     onKeydown(event)
  210.     {
  211.         if ( event.target.id === 'rgbContainer')
  212.         {
  213.             if (event.code === 'ArrowLeft') { this._cycleActive(-1); };
  214.             if (event.code === 'ArrowRight') { this._cycleActive(1); };
  215.             if (event.code === 'ArrowUp') { this._changeActiveColor(10); };
  216.             if (event.code === 'ArrowDown') { this._changeActiveColor(-10); };
  217.         }
  218.     }
  219. }
  220.  
  221. let colorPicker = new ColorPicker();
  222.  
  223. rgbContainer.addEventListener('wheel', colorPicker);
  224. rgbContainer.addEventListener('change', colorPicker);
  225. rgbContainer.addEventListener('mousedown', colorPicker);
  226. rgbContainer.addEventListener('click', colorPicker);
  227. rgbContainer.addEventListener('mouseover', colorPicker);
  228. rgbContainer.addEventListener('mouseout', colorPicker);
  229. rgbContainer.addEventListener('keydown', colorPicker);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement