Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const Tools = require("tools");
- const Data = require("data");
- const Chunks = require("chunks");
- const Windows = require("windows");
- const Camera = require("camera");
- const Net = require("net");
- const Utils = require("utils");
- Tools.add(class extends Tools.tool {
- constructor() {
- super("Paste", {
- icon: "https://cdn3.iconfinder.com/data/icons/tango-icon-library/48/edit-paste-32.png"
- });
- Data.ctx.imageSmoothingEnabled = false;
- let temp = window.requestAnimationFrame;
- window.requestAnimationFrame = (callback) => {
- temp(() => {
- if (!Camera.changed && Tools.current == this) {
- Chunks.rerender();
- }
- callback();
- this.renderFx();
- });
- };
- }
- renderFx() {
- if (Tools.current != this) return;
- if (!this.canvas) return;
- // Great mouse API, 10/10
- let pos = Windows.all[3].title.split(", ").map(a => parseInt(a.slice(3)));
- Data.ctx.drawImage(
- this.canvas,
- pos[0] * Camera.zoom + Data.offsets.x,
- pos[1] * Camera.zoom + Data.offsets.y,
- this.canvas.width * Camera.zoom,
- this.canvas.height * Camera.zoom
- );
- }
- selected() {
- // Upload image
- let input = document.createElement("input");
- input.type = "file";
- input.accept = "image/*";
- input.addEventListener("change", e => {
- let reader = new FileReader();
- reader.addEventListener("load", e => {
- let image = new Image();
- image.addEventListener("load", e => {
- this.canvas = document.createElement("canvas");
- this.canvas.width = image.width;
- this.canvas.height = image.height;
- let ctx = this.canvas.getContext("2d");
- ctx.drawImage(image, 0, 0);
- this.data = ctx.getImageData(0, 0, this.canvas.width, this.canvas.height).data;
- });
- image.src = reader.result;
- });
- reader.readAsDataURL(input.files[0]);
- });
- input.click();
- }
- down(startX, startY) {
- if (!this.data) return;
- let i = 0;
- for (let y=startY; y<startY + this.canvas.height; y++) {
- for (let x=startX; x<startX + this.canvas.width; x++, i+=4) {
- let color = [
- this.data[i + 0],
- this.data[i + 1],
- this.data[i + 2]
- ];
- let alpha = this.data[i + 3];
- if (alpha == 0) continue;
- Utils.setColor(x, y, color);
- }
- }
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement