Advertisement
DayDun

[Tixtels] Paste tool

Nov 17th, 2018
2,917
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const Tools = require("tools");
  2. const Data = require("data");
  3. const Chunks = require("chunks");
  4. const Windows = require("windows");
  5. const Camera = require("camera");
  6. const Net = require("net");
  7. const Utils = require("utils");
  8.  
  9. Tools.add(class extends Tools.tool {
  10.     constructor() {
  11.         super("Paste", {
  12.             icon: "https://cdn3.iconfinder.com/data/icons/tango-icon-library/48/edit-paste-32.png"
  13.         });
  14.        
  15.         Data.ctx.imageSmoothingEnabled = false;
  16.        
  17.         let temp = window.requestAnimationFrame;
  18.         window.requestAnimationFrame = (callback) => {
  19.             temp(() => {
  20.                 if (!Camera.changed && Tools.current == this) {
  21.                     Chunks.rerender();
  22.                 }
  23.                 callback();
  24.                 this.renderFx();
  25.             });
  26.         };
  27.     }
  28.    
  29.     renderFx() {
  30.         if (Tools.current != this) return;
  31.        
  32.         if (!this.canvas) return;
  33.        
  34.         // Great mouse API, 10/10
  35.         let pos = Windows.all[3].title.split(", ").map(a => parseInt(a.slice(3)));
  36.        
  37.         Data.ctx.drawImage(
  38.             this.canvas,
  39.             pos[0] * Camera.zoom + Data.offsets.x,
  40.             pos[1] * Camera.zoom + Data.offsets.y,
  41.             this.canvas.width * Camera.zoom,
  42.             this.canvas.height * Camera.zoom
  43.         );
  44.     }
  45.    
  46.     selected() {
  47.         // Upload image
  48.         let input = document.createElement("input");
  49.         input.type = "file";
  50.         input.accept = "image/*";
  51.         input.addEventListener("change", e => {
  52.             let reader = new FileReader();
  53.             reader.addEventListener("load", e => {
  54.                 let image = new Image();
  55.                 image.addEventListener("load", e => {
  56.                     this.canvas = document.createElement("canvas");
  57.                     this.canvas.width = image.width;
  58.                     this.canvas.height = image.height;
  59.                    
  60.                     let ctx = this.canvas.getContext("2d");
  61.                     ctx.drawImage(image, 0, 0);
  62.                    
  63.                     this.data = ctx.getImageData(0, 0, this.canvas.width, this.canvas.height).data;
  64.                 });
  65.                 image.src = reader.result;
  66.             });
  67.             reader.readAsDataURL(input.files[0]);
  68.         });
  69.         input.click();
  70.     }
  71.    
  72.     down(startX, startY) {
  73.         if (!this.data) return;
  74.        
  75.         let i = 0;
  76.        
  77.         for (let y=startY; y<startY + this.canvas.height; y++) {
  78.             for (let x=startX; x<startX + this.canvas.width; x++, i+=4) {
  79.                 let color = [
  80.                     this.data[i + 0],
  81.                     this.data[i + 1],
  82.                     this.data[i + 2]
  83.                 ];
  84.                 let alpha = this.data[i + 3];
  85.                
  86.                 if (alpha == 0) continue;
  87.                
  88.                 Utils.setColor(x, y, color);
  89.             }
  90.         }
  91.     }
  92. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement