Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //get chatdraw [r,g,b] palette
- function getColors() {
- var colorButtons = document.querySelectorAll("#chatdraw>button-area>button.colorChange");
- var colors = new Array(colorButtons.length);
- for (var i = 0; i < colorButtons.length; i++) {
- var color = StyleUtilities.GetColor(colorButtons[i].style.color);
- //console.log(color)
- colors[i] = [color.r, color.g, color.b];
- }
- return colors
- }
- //apply [r,g,b] palette to image data
- function palettize(imageData,palette){
- var bestIndex;
- for (var x = 0; x < imageData.data.length; x += 4) {
- var bestDist = Infinity;
- for (var i = 0; i < palette.length && bestDist !== 0; i++) {
- for (var j = 0, dist = 0, color = palette[i]; j < 3; j++)
- dist += Math.abs(imageData.data[x + j] - color[j]) * [3, 6, 1][j];
- if (dist < bestDist) {
- bestDist = dist;
- bestIndex = i;
- }
- }
- for (i = 0; i < 3; i++)
- imageData.data[x + i] = palette[bestIndex][i];
- }
- return imageData;
- }
- //tool
- var textTool = new CanvasDrawerTool(function (data, context) {
- if (data.action & CursorActions.End && data.onTarget) {
- context.font = data.lineWidth * 5 + 6 + "px Comic Sans MS"; //what a great way to set font size
- context.textBaseline = "top"; //somebody forgot where the origin is
- var text = prompt();
- if (text === null) return;
- context.fillText(text, data.x, data.y);
- context.putImageData(palettize(context.getImageData(0, 0, context.canvas.width, context.canvas.height),getColors()), 0, 0);
- }
- })
- LocalChatDraw.getDrawer().tools["textTool"] = textTool;
- var button = LocalChatDraw.createToolButton("T", "textTool");
- var buttonArea = document.querySelectorAll("#chatdraw button-area")[1];
- buttonArea.insertBefore(button, buttonArea.firstChild);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement