|
- import Utils from "/app/js/common/Utils.js";
- import GlobalEvents from "/app/js/common/EventCaller.js";
-
- import Input from "/app/js/ui/Input.js";
-
- import NESTile from "/app/js/models/NESTile.js";
- import NESBank from "/app/js/models/NESBank.js";
-
-
- const EL_CANVAS_ID = "painter";
-
-
-
-
- var canvas = null;
- var context = null;
-
-
- var HANDLE_Resize = Utils.debounce(function(e){
- if (canvas !== null){
- var w = canvas.clientWidth;
- var h = canvas.clientHeight;
- canvas.width = w;
- canvas.height = h;
- }
- }, 250);
- window.addEventListener("resize", HANDLE_Resize);
-
-
-
- var input = new Input();
- input.preventDefaults = true;
-
-
-
-
-
-
-
-
-
- class CTRLPainter {
- constructor(){
- this.__scale = 1.0;
- this.__offset = [0.0, 0.0];
- this.__onePaletteMode = true;
-
- this.__brushSize = 1;
- this.__brushColor = 0;
- this.__brushPalette = 0;
-
- this.__surface = null;
-
- var self = this;
-
- var handle_change_surface = (function(surf){
- if (!(surf instanceof ISurface)){
- console.log("WARNING: Attempted to set painter to non-surface instance.");
- return;
- }
- this.__surface = surf;
-
- }).bind(this);
- GlobalEvents.listen("change_surface", handle_change_surface);
-
- var handle_color_change = (function(pi, ci){
- this.__brushPalette = pi;
- this.__brushColor = ci;
- }).bind(this);
- GlobalEvents.listen("active_palette_color", handle_color_change);
- }
-
- get onePaletteMode(){return this.__onePaletteMode;}
- set onePaletteMode(e){
- this.__onePaletteMode = (e === true);
-
- }
-
- get scale(){
- return this.__scale;
- }
-
- set scale(s){
- if (typeof(s) !== 'number')
- throw new TypeError("Expected number value.");
- this.__scale = Math.max(0.1, Math.min(100.0, s));
- }
-
- initialize(){
- if (canvas === null){
- canvas = document.getElementById(EL_CANVAS_ID);
- if (!canvas)
- throw new Error("Failed to obtain the canvas element.");
- context = canvas.getContext("2d");
- if (!context)
- throw new Error("Failed to obtain canvas context.");
- input.mouseTargetElement = canvas;
- }
- }
-
- scale_up(amount=1){
- this.scale = this.scale + (amount*0.1);
- }
-
- scale_down(amount=1){
- this.scale = this.scale - (amount*0.1);
- }
- }
-
-
- const instance = new CTRLPainter();
- export default instance;
-
-
|