Advertisement
12Me21

chatdraw text

May 24th, 2017
382
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //get chatdraw [r,g,b] palette
  2. function getColors() {
  3.     var colorButtons = document.querySelectorAll("#chatdraw>button-area>button.colorChange");
  4.     var colors = new Array(colorButtons.length);
  5.     for (var i = 0; i < colorButtons.length; i++) {
  6.         var color = StyleUtilities.GetColor(colorButtons[i].style.color);
  7.         //console.log(color)
  8.         colors[i] = [color.r, color.g, color.b];
  9.     }
  10.     return colors
  11. }
  12.  
  13. //apply [r,g,b] palette to image data
  14. function palettize(imageData,palette){
  15.     var bestIndex;
  16.     for (var x = 0; x < imageData.data.length; x += 4) {
  17.         var bestDist = Infinity;
  18.         for (var i = 0; i < palette.length && bestDist !== 0; i++) {
  19.             for (var j = 0, dist = 0, color = palette[i]; j < 3; j++)
  20.                 dist += Math.abs(imageData.data[x + j] - color[j]) * [3, 6, 1][j];
  21.             if (dist < bestDist) {
  22.                 bestDist = dist;
  23.                 bestIndex = i;
  24.             }
  25.         }
  26.         for (i = 0; i < 3; i++)
  27.             imageData.data[x + i] = palette[bestIndex][i];
  28.     }
  29.     return imageData;
  30. }
  31.  
  32. //tool
  33. var textTool = new CanvasDrawerTool(function (data, context) {
  34.     if (data.action & CursorActions.End && data.onTarget) {
  35.         context.font = data.lineWidth * 5 + 6 + "px Comic Sans MS"; //what a great way to set font size
  36.         context.textBaseline = "top"; //somebody forgot where the origin is
  37.         var text = prompt();
  38.         if (text === null) return;
  39.         context.fillText(text, data.x, data.y);
  40.        
  41.         context.putImageData(palettize(context.getImageData(0, 0, context.canvas.width, context.canvas.height),getColors()), 0, 0);
  42.     }
  43. })
  44.  
  45. LocalChatDraw.getDrawer().tools["textTool"] = textTool;
  46. var button = LocalChatDraw.createToolButton("T", "textTool");
  47. var buttonArea = document.querySelectorAll("#chatdraw button-area")[1];
  48. buttonArea.insertBefore(button, buttonArea.firstChild);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement