soiz1's picture
Upload 811 files
30c32c8 verified
raw
history blame
2.23 kB
const uid = require('../../util/uid');
class canvasStorage {
/**
* initiats the storage
*/
constructor () {
this.canvases = {};
}
attachRuntime (runtime) {
this.runtime = runtime;
}
/**
* gets a canvas with a given id
* @param {string} id the id of the canvas to get
* @returns {Object} the canvas object with this id
*/
getCanvas (id) {
return this.canvases[id];
}
/**
* deletes a canvas with a given id
* @param {string} id the canvas id to delete
* @returns {Object} the deleted canvas
*/
deleteCanvas (id) {
const orignal = this.canvases[id];
delete this.canvases[id];
return orignal;
}
/**
* creates a new canvas
* @param {string} name the name to give the new canvas
* @param {number} width the width of the canvas
* @param {number} height the height of the canvas
* @param {string} opt_id the id of the canvas
* @returns {Object} the new canvas object
*/
newCanvas (name, width, height, opt_id) {
width = width || this.runtime.stageWidth;
height = height || this.runtime.stageHeight;
const id = opt_id || uid();
const element = document.createElement('canvas');
element.id = id;
element.width = width;
element.height = height;
const skin = !this.runtime.renderer
? null
: this.runtime.renderer.createBitmapSkin(element, 1);
const data = {
name: name,
id: id,
element: element,
skinId: skin,
width: width,
height: height,
context: element.getContext('2d')
};
this.canvases[id] = data;
return data;
}
/**
* gets or creates a canvas with name equal to
* @param {String} name the name of the canvas
*/
getCanvasByName (name) {
return Object.values(this.canvases).find(canvas => canvas.name === name);
}
/**
* gets all canvases
* @returns {Array}
*/
getAllCanvases () {
return Object.values(this.canvases);
}
}
module.exports = canvasStorage;