diff --git a/src/js/actions/activate-tool.js b/src/js/actions/activate-tool.js index c8b94eb..e5ab0da 100644 --- a/src/js/actions/activate-tool.js +++ b/src/js/actions/activate-tool.js @@ -8,140 +8,140 @@ export class Activate_tool_action extends Base_action { * Groups multiple actions together in the undo/redo history, runs them all at once. */ constructor(key, ignore_same_tool) { - super('activate_tool', 'Activate Tool'); - this.ignore_same_tool = !!ignore_same_tool; - this.key = key; - this.old_key = null; - this.tool_leave_actions = null; - this.tool_activate_actions = null; + super('activate_tool', 'Activate Tool'); + this.ignore_same_tool = !!ignore_same_tool; + this.key = key; + this.old_key = null; + this.tool_leave_actions = null; + this.tool_activate_actions = null; } - async do() { - super.do(); - const key = this.key; - this.old_key = app.GUI.GUI_tools.active_tool; + async do() { + super.do(); + const key = this.key; + this.old_key = app.GUI.GUI_tools.active_tool; - if (this.key === this.old_key && !this.ignore_same_tool) { - throw new Error('Aborted - specified tool is already the active tool'); - } + if (this.key === this.old_key && !this.ignore_same_tool) { + throw new Error('Aborted - specified tool is already the active tool'); + } - //reset last + //reset last document.querySelector('#tools_container .' + this.old_key) - .classList.remove("active"); + .classList.remove("active"); - //send exit event to old previous tool - if (config.TOOL.on_leave != undefined) { - var moduleKey = config.TOOL.name; - var functionName = config.TOOL.on_leave; - this.tool_leave_actions = app.GUI.GUI_tools.tools_modules[moduleKey][functionName](); - if (this.tool_leave_actions) { - for (let action of this.tool_leave_actions) { - await action.do(); - } - } - } + //send exit event to old previous tool + if (config.TOOL.on_leave != undefined) { + var moduleKey = config.TOOL.name; + var functionName = config.TOOL.on_leave; + this.tool_leave_actions = app.GUI.GUI_tools.tools_modules[moduleKey][functionName](); + if (this.tool_leave_actions) { + for (let action of this.tool_leave_actions) { + await action.do(); + } + } + } - //change active - app.GUI.GUI_tools.active_tool = key; - document.querySelector('#tools_container .' + app.GUI.GUI_tools.active_tool) - .classList.add("active"); - for (let i in config.TOOLS) { - if (config.TOOLS[i].name == app.GUI.GUI_tools.active_tool) { - config.TOOL = config.TOOLS[i]; - } - } + //change active + app.GUI.GUI_tools.active_tool = key; + document.querySelector('#tools_container .' + app.GUI.GUI_tools.active_tool) + .classList.add("active"); + for (let i in config.TOOLS) { + if (config.TOOLS[i].name == app.GUI.GUI_tools.active_tool) { + config.TOOL = config.TOOLS[i]; + } + } - //check module - if (app.GUI.GUI_tools.tools_modules[key] == undefined) { - alertify.error('Tools class not found: ' + key); - return; - } + //check module + if (app.GUI.GUI_tools.tools_modules[key] == undefined) { + alertify.error('Tools class not found: ' + key); + return; + } - //set default cursor - const mainWrapper = document.getElementById('main_wrapper'); - const defaultCursor = config.TOOL && config.TOOL.name === 'text' ? 'text' : 'default'; - if (mainWrapper.style.cursor != defaultCursor) { - mainWrapper.style.cursor = defaultCursor; - } + //set default cursor + const mainWrapper = document.getElementById('main_wrapper'); + const defaultCursor = config.TOOL && config.TOOL.name === 'text' ? 'text' : 'default'; + if (mainWrapper.style.cursor != defaultCursor) { + mainWrapper.style.cursor = defaultCursor; + } - app.GUI.GUI_tools.show_action_attributes(); - app.GUI.GUI_tools.Helper.setCookie('active_tool', app.GUI.GUI_tools.active_tool); + app.GUI.GUI_tools.show_action_attributes(); + app.GUI.GUI_tools.Helper.setCookie('active_tool', app.GUI.GUI_tools.active_tool); - //send activate event to new tool - if (config.TOOL.on_activate != undefined) { - var moduleKey = config.TOOL.name; - var functionName = config.TOOL.on_activate; - this.tool_activate_actions = app.GUI.GUI_tools.tools_modules[moduleKey][functionName](); - if (this.tool_activate_actions) { - for (let action of this.tool_activate_actions) { - await action.do(); - } - } - } + //send activate event to new tool + if (config.TOOL.on_activate != undefined) { + var moduleKey = config.TOOL.name; + var functionName = config.TOOL.on_activate; + this.tool_activate_actions = app.GUI.GUI_tools.tools_modules[moduleKey][functionName](); + if (this.tool_activate_actions) { + for (let action of this.tool_activate_actions) { + await action.do(); + } + } + } - config.need_render = true; - } + config.need_render = true; + } - async undo() { - super.undo(); + async undo() { + super.undo(); - // Undo activate actions - if (this.tool_activate_actions) { - for (let action of this.tool_activate_actions) { - await action.undo(); - action.free(); - } - this.tool_activate_actions = null; - } + // Undo activate actions + if (this.tool_activate_actions) { + for (let action of this.tool_activate_actions) { + await action.undo(); + action.free(); + } + this.tool_activate_actions = null; + } - //reset last + //reset last document.querySelector('#tools_container .' + this.key) - .classList.remove("active"); + .classList.remove("active"); - //change active - app.GUI.GUI_tools.active_tool = this.old_key; - document.querySelector('#tools_container .' + app.GUI.GUI_tools.active_tool) - .classList.add("active"); - for (let i in config.TOOLS) { - if (config.TOOLS[i].name == app.GUI.GUI_tools.active_tool) { - config.TOOL = config.TOOLS[i]; - } - } + //change active + app.GUI.GUI_tools.active_tool = this.old_key; + document.querySelector('#tools_container .' + app.GUI.GUI_tools.active_tool) + .classList.add("active"); + for (let i in config.TOOLS) { + if (config.TOOLS[i].name == app.GUI.GUI_tools.active_tool) { + config.TOOL = config.TOOLS[i]; + } + } - app.GUI.GUI_tools.show_action_attributes(); - app.GUI.GUI_tools.Helper.setCookie('active_tool', app.GUI.GUI_tools.active_tool); + app.GUI.GUI_tools.show_action_attributes(); + app.GUI.GUI_tools.Helper.setCookie('active_tool', app.GUI.GUI_tools.active_tool); - //set default cursor - const mainWrapper = document.getElementById('main_wrapper'); - const defaultCursor = config.TOOL && config.TOOL.name === 'text' ? 'text' : 'default'; - if (mainWrapper.style.cursor != defaultCursor) { - mainWrapper.style.cursor = defaultCursor; - } + //set default cursor + const mainWrapper = document.getElementById('main_wrapper'); + const defaultCursor = config.TOOL && config.TOOL.name === 'text' ? 'text' : 'default'; + if (mainWrapper.style.cursor != defaultCursor) { + mainWrapper.style.cursor = defaultCursor; + } - // Undo leave actions - if (this.tool_leave_actions) { - for (let action of this.tool_leave_actions) { - await action.undo(); - action.free(); - } - this.tool_leave_actions = null; - } + // Undo leave actions + if (this.tool_leave_actions) { + for (let action of this.tool_leave_actions) { + await action.undo(); + action.free(); + } + this.tool_leave_actions = null; + } - config.need_render = true; - } + config.need_render = true; + } - free() { - if (this.tool_activate_actions) { - for (let action of this.tool_activate_actions) { - action.free(); - } - this.tool_activate_actions = null; - } - if (this.tool_leave_actions) { - for (let action of this.tool_leave_actions) { - action.free(); - } - this.tool_leave_actions = null; - } - } + free() { + if (this.tool_activate_actions) { + for (let action of this.tool_activate_actions) { + action.free(); + } + this.tool_activate_actions = null; + } + if (this.tool_leave_actions) { + for (let action of this.tool_leave_actions) { + action.free(); + } + this.tool_leave_actions = null; + } + } } \ No newline at end of file diff --git a/src/js/actions/add-layer-filter.js b/src/js/actions/add-layer-filter.js index cbdc134..cd2af59 100644 --- a/src/js/actions/add-layer-filter.js +++ b/src/js/actions/add-layer-filter.js @@ -11,24 +11,24 @@ export class Add_layer_filter_action extends Base_action { * @param {object} params */ constructor(layer_id, name, params) { - super('add_layer_filter', 'Add Layer Filter'); - if (layer_id == null) + super('add_layer_filter', 'Add Layer Filter'); + if (layer_id == null) layer_id = config.layer.id; - this.layer_id = parseInt(layer_id); - this.filter_id = Math.floor(Math.random() * 999999999) + 1; // A good UUID library would - this.name = name; - this.params = params; - this.reference_layer = null; + this.layer_id = parseInt(layer_id); + this.filter_id = Math.floor(Math.random() * 999999999) + 1; // A good UUID library would + this.name = name; + this.params = params; + this.reference_layer = null; } - async do() { - super.do(); - this.reference_layer = app.Layers.get_layer(this.layer_id); - if (!this.reference_layer) { - throw new Error('Aborted - layer with specified id doesn\'t exist'); - } + async do() { + super.do(); + this.reference_layer = app.Layers.get_layer(this.layer_id); + if (!this.reference_layer) { + throw new Error('Aborted - layer with specified id doesn\'t exist'); + } var filter = { - id: this.filter_id, + id: this.filter_id, name: this.name, params: this.params, }; @@ -36,20 +36,20 @@ export class Add_layer_filter_action extends Base_action { config.need_render = true; app.GUI.GUI_layers.render_layers(); - } + } - async undo() { - super.undo(); - if (this.reference_layer) { - this.reference_layer.filters.pop(); - this.reference_layer = null; - } - config.need_render = true; + async undo() { + super.undo(); + if (this.reference_layer) { + this.reference_layer.filters.pop(); + this.reference_layer = null; + } + config.need_render = true; app.GUI.GUI_layers.render_layers(); - } + } - free() { - this.reference_layer = null; - this.params = null; - } + free() { + this.reference_layer = null; + this.params = null; + } } \ No newline at end of file diff --git a/src/js/actions/autoresize-canvas.js b/src/js/actions/autoresize-canvas.js index bd2cd4a..cb78b3d 100644 --- a/src/js/actions/autoresize-canvas.js +++ b/src/js/actions/autoresize-canvas.js @@ -13,22 +13,22 @@ export class Autoresize_canvas_action extends Base_action { */ constructor(width, height, layer_id, can_automate = true) { super('autoresize_canvas', 'Auto-resize Canvas'); - this.width = width; - this.height = height; - this.layer_id = layer_id; - this.can_automate = can_automate; - this.old_config_width = null; - this.old_config_height = null; + this.width = width; + this.height = height; + this.layer_id = layer_id; + this.can_automate = can_automate; + this.old_config_width = null; + this.old_config_height = null; } async do() { - super.do(); - const width = this.width; - const height = this.height; - const can_automate = this.can_automate; - let need_fit = false; - let new_config_width = config.WIDTH; - let new_config_height = config.HEIGHT; + super.do(); + const width = this.width; + const height = this.height; + const can_automate = this.can_automate; + let need_fit = false; + let new_config_width = config.WIDTH; + let new_config_height = config.HEIGHT; // Resize up if (width > new_config_width || height > new_config_height) { @@ -53,40 +53,40 @@ export class Autoresize_canvas_action extends Base_action { new_config_height = parseInt(height); } - if (new_config_width !== config.WIDTH || new_config_height !== height) { - this.old_config_width = config.WIDTH; - this.old_config_height = config.HEIGHT; - config.WIDTH = new_config_width; - config.HEIGHT = new_config_height; - app.GUI.prepare_canvas(); - } else { - throw new Error('Aborted - Resize not necessary') - } + if (new_config_width !== config.WIDTH || new_config_height !== height) { + this.old_config_width = config.WIDTH; + this.old_config_height = config.HEIGHT; + config.WIDTH = new_config_width; + config.HEIGHT = new_config_height; + app.GUI.prepare_canvas(); + } else { + throw new Error('Aborted - Resize not necessary') + } // Fit zoom when after short pause // @todo - remove setTimeout if (need_fit == true) { - await new Promise((resolve) => { - window.setTimeout(() => { - app.GUI.GUI_preview.zoom_auto(); - resolve(); - }, 100); - }); + await new Promise((resolve) => { + window.setTimeout(() => { + app.GUI.GUI_preview.zoom_auto(); + resolve(); + }, 100); + }); } - } + } - async undo() { - super.undo(); - if (this.old_config_width != null) { - config.WIDTH = this.old_config_width; - } - if (this.old_config_height != null) { - config.HEIGHT = this.old_config_height; - } - if (this.old_config_width != null || this.old_config_height != null) { - app.GUI.prepare_canvas(); - } - this.old_config_width = null; - this.old_config_height = null; - } + async undo() { + super.undo(); + if (this.old_config_width != null) { + config.WIDTH = this.old_config_width; + } + if (this.old_config_height != null) { + config.HEIGHT = this.old_config_height; + } + if (this.old_config_width != null || this.old_config_height != null) { + app.GUI.prepare_canvas(); + } + this.old_config_width = null; + this.old_config_height = null; + } } \ No newline at end of file diff --git a/src/js/actions/base.js b/src/js/actions/base.js index 50603a1..9608dc7 100644 --- a/src/js/actions/base.js +++ b/src/js/actions/base.js @@ -1,19 +1,19 @@ export class Base_action { - constructor(action_id, action_description) { - this.action_id = action_id; - this.action_description = action_description; - this.is_done = false; - this.memory_estimate = 0; // Estimate of how much memory will be freed when the free() method is called (in bytes) - this.database_estimate = 0; // Estimate of how much database space will be freed when the free() method is called (in bytes) - } - do() { - this.is_done = true; - } - undo() { - this.is_done = false; - } - free() { - // Override if need to run tasks to free memory when action is discarded from history - } + constructor(action_id, action_description) { + this.action_id = action_id; + this.action_description = action_description; + this.is_done = false; + this.memory_estimate = 0; // Estimate of how much memory will be freed when the free() method is called (in bytes) + this.database_estimate = 0; // Estimate of how much database space will be freed when the free() method is called (in bytes) + } + do() { + this.is_done = true; + } + undo() { + this.is_done = false; + } + free() { + // Override if need to run tasks to free memory when action is discarded from history + } } \ No newline at end of file diff --git a/src/js/actions/bundle.js b/src/js/actions/bundle.js index 94ac764..7c61b08 100644 --- a/src/js/actions/bundle.js +++ b/src/js/actions/bundle.js @@ -6,54 +6,54 @@ export class Bundle_action extends Base_action { * Groups multiple actions together in the undo/redo history, runs them all at once. */ constructor(bundle_id, bundle_name, actions_to_do) { - super(bundle_id, bundle_name); - this.actions_to_do = actions_to_do; + super(bundle_id, bundle_name); + this.actions_to_do = actions_to_do; } - async do() { - super.do(); - let error = null; - let i = 0; - this.memory_estimate = 0; - this.database_estimate = 0; - for (i = 0; i < this.actions_to_do.length; i++) { - try { - await this.actions_to_do[i].do(); - this.memory_estimate += this.actions_to_do[i].memory_estimate; - this.database_estimate += this.actions_to_do[i].database_estimate; - } catch (e) { - error = e; - break; - } - } - // One of the actions aborted, undo all previous actions. - if (error) { - for (i--; i >= 0; i--) { - await this.actions_to_do[i].undo(); - } - throw error; - } - config.need_render = true; - } + async do() { + super.do(); + let error = null; + let i = 0; + this.memory_estimate = 0; + this.database_estimate = 0; + for (i = 0; i < this.actions_to_do.length; i++) { + try { + await this.actions_to_do[i].do(); + this.memory_estimate += this.actions_to_do[i].memory_estimate; + this.database_estimate += this.actions_to_do[i].database_estimate; + } catch (e) { + error = e; + break; + } + } + // One of the actions aborted, undo all previous actions. + if (error) { + for (i--; i >= 0; i--) { + await this.actions_to_do[i].undo(); + } + throw error; + } + config.need_render = true; + } - async undo() { - super.undo(); - this.memory_estimate = 0; - this.database_estimate = 0; - for (let i = this.actions_to_do.length - 1; i >= 0; i--) { - await this.actions_to_do[i].undo(); - this.memory_estimate += this.actions_to_do[i].memory_estimate; - this.database_estimate += this.actions_to_do[i].database_estimate; - } - config.need_render = true; - } + async undo() { + super.undo(); + this.memory_estimate = 0; + this.database_estimate = 0; + for (let i = this.actions_to_do.length - 1; i >= 0; i--) { + await this.actions_to_do[i].undo(); + this.memory_estimate += this.actions_to_do[i].memory_estimate; + this.database_estimate += this.actions_to_do[i].database_estimate; + } + config.need_render = true; + } - free() { - if (this.actions_to_do) { - for (let action of this.actions_to_do) { - action.free(); - } - this.actions_to_do = null; - } - } + free() { + if (this.actions_to_do) { + for (let action of this.actions_to_do) { + action.free(); + } + this.actions_to_do = null; + } + } } \ No newline at end of file diff --git a/src/js/actions/clear-layer.js b/src/js/actions/clear-layer.js index a9f8d5a..05da875 100644 --- a/src/js/actions/clear-layer.js +++ b/src/js/actions/clear-layer.js @@ -9,74 +9,74 @@ export class Clear_layer_action extends Base_action { * @param {int} layer_id */ constructor(layer_id) { - super('clear_layer', 'Clear Layer'); - this.layer_id = parseInt(layer_id); - this.update_layer_action = null; - this.delete_layer_settings_action = null; + super('clear_layer', 'Clear Layer'); + this.layer_id = parseInt(layer_id); + this.update_layer_action = null; + this.delete_layer_settings_action = null; } - async do() { - super.do(); - let layer = app.Layers.get_layer(this.layer_id); - if (!layer) { - throw new Error('Aborted - layer with specified id doesn\'t exist'); - } - let new_settings = { - x: 0, - y: 0, - width: 0, - height: 0, - visible: true, - opacity: 100, - composition: null, - rotate: 0, - data: null, - params: {}, - status: null, - render_function: null, - type: null - }; - if (layer.type == 'image') { + async do() { + super.do(); + let layer = app.Layers.get_layer(this.layer_id); + if (!layer) { + throw new Error('Aborted - layer with specified id doesn\'t exist'); + } + let new_settings = { + x: 0, + y: 0, + width: 0, + height: 0, + visible: true, + opacity: 100, + composition: null, + rotate: 0, + data: null, + params: {}, + status: null, + render_function: null, + type: null + }; + if (layer.type == 'image') { //clean image new_settings.link = null; - } - this.update_layer_action = new app.Actions.Update_layer_action(this.layer_id, new_settings); - await this.update_layer_action.do(); - let delete_setting_names = []; - for (let prop_name in layer) { + } + this.update_layer_action = new app.Actions.Update_layer_action(this.layer_id, new_settings); + await this.update_layer_action.do(); + let delete_setting_names = []; + for (let prop_name in layer) { //remove private attributes if (prop_name[0] == '_') { - delete_setting_names.push(prop_name); - } - } - if (delete_setting_names.length > 0) { - this.delete_layer_settings_action = new app.Actions.Delete_layer_settings_action(this.layer_id, delete_setting_names); - await this.delete_layer_settings_action.do(); - } - } + delete_setting_names.push(prop_name); + } + } + if (delete_setting_names.length > 0) { + this.delete_layer_settings_action = new app.Actions.Delete_layer_settings_action(this.layer_id, delete_setting_names); + await this.delete_layer_settings_action.do(); + } + } - async undo() { - super.undo(); - if (this.delete_layer_settings_action) { - await this.delete_layer_settings_action.undo(); - this.delete_layer_settings_action.free(); - this.delete_layer_settings_action = null; - } - if (this.update_layer_action) { - await this.update_layer_action.undo(); - this.update_layer_action.free(); - this.update_layer_action = null; - } - } + async undo() { + super.undo(); + if (this.delete_layer_settings_action) { + await this.delete_layer_settings_action.undo(); + this.delete_layer_settings_action.free(); + this.delete_layer_settings_action = null; + } + if (this.update_layer_action) { + await this.update_layer_action.undo(); + this.update_layer_action.free(); + this.update_layer_action = null; + } + } - free() { - if (this.update_layer_action) { - this.update_layer_action.free(); - this.update_layer_action = null; - } - if (this.delete_layer_settings_action) { - this.delete_layer_settings_action.free(); - this.delete_layer_settings_action = null; - } - } + free() { + if (this.update_layer_action) { + this.update_layer_action.free(); + this.update_layer_action = null; + } + if (this.delete_layer_settings_action) { + this.delete_layer_settings_action.free(); + this.delete_layer_settings_action = null; + } + } } \ No newline at end of file diff --git a/src/js/actions/delete-layer-filter.js b/src/js/actions/delete-layer-filter.js index 821f233..c1250ea 100644 --- a/src/js/actions/delete-layer-filter.js +++ b/src/js/actions/delete-layer-filter.js @@ -10,51 +10,51 @@ export class Delete_layer_filter_action extends Base_action { * @param {string} filter_id */ constructor(layer_id, filter_id) { - super('delete_layer_filter', 'Delete Layer Filter'); - if (layer_id == null) + super('delete_layer_filter', 'Delete Layer Filter'); + if (layer_id == null) layer_id = config.layer.id; - this.layer_id = parseInt(layer_id); - this.filter_id = filter_id; - this.reference_layer = null; - this.filter_remove_index = null; - this.old_filter = null; + this.layer_id = parseInt(layer_id); + this.filter_id = filter_id; + this.reference_layer = null; + this.filter_remove_index = null; + this.old_filter = null; } - async do() { - super.do(); - this.reference_layer = app.Layers.get_layer(this.layer_id); - if (!this.reference_layer) { - throw new Error('Aborted - layer with specified id doesn\'t exist'); - } - this.old_filter = null; + async do() { + super.do(); + this.reference_layer = app.Layers.get_layer(this.layer_id); + if (!this.reference_layer) { + throw new Error('Aborted - layer with specified id doesn\'t exist'); + } + this.old_filter = null; for (let i in this.reference_layer.filters) { if (this.reference_layer.filters[i].id == this.filter_id) { - this.filter_remove_index = i; - this.old_filter = this.reference_layer.filters.splice(i, 1)[0]; - break; + this.filter_remove_index = i; + this.old_filter = this.reference_layer.filters.splice(i, 1)[0]; + break; } - } - if (!this.old_filter) { - throw new Error('Aborted - filter with specified id doesn\'t exist in layer'); - } + } + if (!this.old_filter) { + throw new Error('Aborted - filter with specified id doesn\'t exist in layer'); + } config.need_render = true; app.GUI.GUI_layers.render_layers(); - } + } - async undo() { - super.undo(); - if (this.reference_layer && this.old_filter) { - this.reference_layer.filters.splice(this.filter_remove_index, 0, this.old_filter); - } - this.reference_layer = null; - this.old_filter = null; - this.filter_remove_index = null; - config.need_render = true; + async undo() { + super.undo(); + if (this.reference_layer && this.old_filter) { + this.reference_layer.filters.splice(this.filter_remove_index, 0, this.old_filter); + } + this.reference_layer = null; + this.old_filter = null; + this.filter_remove_index = null; + config.need_render = true; app.GUI.GUI_layers.render_layers(); - } + } - free() { - this.reference_layer = null; - this.old_filter = null; - } + free() { + this.reference_layer = null; + this.old_filter = null; + } } \ No newline at end of file diff --git a/src/js/actions/delete-layer-settings.js b/src/js/actions/delete-layer-settings.js index 8587fb0..4bceeef 100644 --- a/src/js/actions/delete-layer-settings.js +++ b/src/js/actions/delete-layer-settings.js @@ -7,44 +7,44 @@ export class Delete_layer_settings_action extends Base_action { * Deletes the specified settings in a layer * * @param {int} layer_id - * @param {array} setting_names + * @param {array} setting_names */ constructor(layer_id, setting_names) { - super('delete_layer_settings', 'Delete Layer Settings'); - this.layer_id = parseInt(layer_id); - this.setting_names = setting_names; - this.reference_layer = null; - this.old_settings = {}; + super('delete_layer_settings', 'Delete Layer Settings'); + this.layer_id = parseInt(layer_id); + this.setting_names = setting_names; + this.reference_layer = null; + this.old_settings = {}; } - async do() { - super.do(); - this.reference_layer = app.Layers.get_layer(this.layer_id); - if (!this.reference_layer) { - throw new Error('Aborted - layer with specified id doesn\'t exist'); - } - for (let name in this.setting_names) { - this.old_settings[name] = this.reference_layer[name]; - delete this.reference_layer[name]; - } - config.need_render = true; - } + async do() { + super.do(); + this.reference_layer = app.Layers.get_layer(this.layer_id); + if (!this.reference_layer) { + throw new Error('Aborted - layer with specified id doesn\'t exist'); + } + for (let name in this.setting_names) { + this.old_settings[name] = this.reference_layer[name]; + delete this.reference_layer[name]; + } + config.need_render = true; + } - async undo() { - super.undo(); - if (this.reference_layer) { - for (let i in this.old_settings) { - this.reference_layer[i] = this.old_settings[i]; - } - this.old_settings = {}; - } - this.reference_layer = null; - config.need_render = true; - } + async undo() { + super.undo(); + if (this.reference_layer) { + for (let i in this.old_settings) { + this.reference_layer[i] = this.old_settings[i]; + } + this.old_settings = {}; + } + this.reference_layer = null; + config.need_render = true; + } - free() { - this.setting_names = null; - this.reference_layer = null; - this.old_settings = null; - } + free() { + this.setting_names = null; + this.reference_layer = null; + this.old_settings = null; + } } \ No newline at end of file diff --git a/src/js/actions/init-canvas-zoom.js b/src/js/actions/init-canvas-zoom.js index cdf75d9..220b94b 100644 --- a/src/js/actions/init-canvas-zoom.js +++ b/src/js/actions/init-canvas-zoom.js @@ -8,38 +8,38 @@ export class Init_canvas_zoom_action extends Base_action { * Resets the canvas */ constructor() { - super('init_canvas_zoom', 'Initialize Canvas Zoom'); - this.old_bounds = null; - this.old_context = null; - this.old_stable_dimensions = null; + super('init_canvas_zoom', 'Initialize Canvas Zoom'); + this.old_bounds = null; + this.old_context = null; + this.old_stable_dimensions = null; } async do() { - super.do(); - this.old_bounds = zoomView.getBounds(); - this.old_context = zoomView.getContext(); - this.old_stable_dimensions = app.Layers.stable_dimensions; - zoomView.setBounds(0, 0, config.WIDTH, config.HEIGHT); + super.do(); + this.old_bounds = zoomView.getBounds(); + this.old_context = zoomView.getContext(); + this.old_stable_dimensions = app.Layers.stable_dimensions; + zoomView.setBounds(0, 0, config.WIDTH, config.HEIGHT); zoomView.setContext(app.Layers.ctx); app.Layers.stable_dimensions = [ config.WIDTH, config.HEIGHT ]; - } + } - async undo() { - super.undo(); - zoomView.setBounds(this.old_bounds.top, this.old_bounds.left, this.old_bounds.right, this.old_bounds.bottom); - zoomView.setContext(this.old_context); - app.Layers.stable_dimensions = this.old_stable_dimensions; - this.old_bounds = null; - this.old_context = null; - this.old_stable_dimensions = null; - } + async undo() { + super.undo(); + zoomView.setBounds(this.old_bounds.top, this.old_bounds.left, this.old_bounds.right, this.old_bounds.bottom); + zoomView.setContext(this.old_context); + app.Layers.stable_dimensions = this.old_stable_dimensions; + this.old_bounds = null; + this.old_context = null; + this.old_stable_dimensions = null; + } - free() { - this.old_bounds = null; - this.old_context = null; - this.old_stable_dimensions = null; - } + free() { + this.old_bounds = null; + this.old_context = null; + this.old_stable_dimensions = null; + } } \ No newline at end of file diff --git a/src/js/actions/prepare-canvas.js b/src/js/actions/prepare-canvas.js index bb6039f..ab95f15 100644 --- a/src/js/actions/prepare-canvas.js +++ b/src/js/actions/prepare-canvas.js @@ -9,21 +9,21 @@ export class Prepare_canvas_action extends Base_action { * @param {boolean} call_when */ constructor(call_when = 'undo') { - super('prepare_canvas', 'Prepare Canvas'); - this.call_when = call_when; + super('prepare_canvas', 'Prepare Canvas'); + this.call_when = call_when; } async do() { - super.do(); - if (this.call_when === 'do') { - app.GUI.prepare_canvas(); - } - } + super.do(); + if (this.call_when === 'do') { + app.GUI.prepare_canvas(); + } + } - async undo() { - super.undo(); - if (this.call_when === 'undo') { - app.GUI.prepare_canvas(); - } - } + async undo() { + super.undo(); + if (this.call_when === 'undo') { + app.GUI.prepare_canvas(); + } + } } \ No newline at end of file diff --git a/src/js/actions/refresh-layers-gui.js b/src/js/actions/refresh-layers-gui.js index 97fe0ea..3f11098 100644 --- a/src/js/actions/refresh-layers-gui.js +++ b/src/js/actions/refresh-layers-gui.js @@ -9,21 +9,21 @@ export class Refresh_layers_gui_action extends Base_action { * @param {boolean} call_when */ constructor(call_when = 'undo') { - super('refresh_gui', 'Refresh GUI'); - this.call_when = call_when; + super('refresh_gui', 'Refresh GUI'); + this.call_when = call_when; } async do() { - super.do(); - if (this.call_when === 'do') { - app.Layers.refresh_gui(); - } - } + super.do(); + if (this.call_when === 'do') { + app.Layers.refresh_gui(); + } + } - async undo() { - super.undo(); - if (this.call_when === 'undo') { - app.Layers.refresh_gui(); - } - } + async undo() { + super.undo(); + if (this.call_when === 'undo') { + app.Layers.refresh_gui(); + } + } } \ No newline at end of file diff --git a/src/js/actions/reorder-layer.js b/src/js/actions/reorder-layer.js index 8225a99..45c2c95 100644 --- a/src/js/actions/reorder-layer.js +++ b/src/js/actions/reorder-layer.js @@ -10,55 +10,55 @@ export class Reorder_layer_action extends Base_action { * @param {int} direction */ constructor(layer_id, direction) { - super('reorder_layer', 'Reorder Layer'); - this.layer_id = parseInt(layer_id); - this.direction = direction; - this.reference_layer = null; - this.reference_target = null; - this.old_layer_order = null; - this.old_target_order = null; + super('reorder_layer', 'Reorder Layer'); + this.layer_id = parseInt(layer_id); + this.direction = direction; + this.reference_layer = null; + this.reference_target = null; + this.old_layer_order = null; + this.old_target_order = null; } - async do() { - super.do(); - this.reference_layer = app.Layers.get_layer(this.layer_id); - if (!this.reference_layer) { - throw new Error('Aborted - layer with specified id doesn\'t exist'); - } + async do() { + super.do(); + this.reference_layer = app.Layers.get_layer(this.layer_id); + if (!this.reference_layer) { + throw new Error('Aborted - layer with specified id doesn\'t exist'); + } if (this.direction < 0) { this.reference_target = app.Layers.find_previous(this.layer_id); } else { this.reference_target = app.Layers.find_next(this.layer_id); - } - if (!this.reference_target) { - throw new Error('Aborted - layer has nowhere to move'); - } - this.old_layer_order = this.reference_layer.order; - this.old_target_order = this.reference_target.order; - this.reference_layer.order = this.old_target_order; - this.reference_target.order = this.old_layer_order; + } + if (!this.reference_target) { + throw new Error('Aborted - layer has nowhere to move'); + } + this.old_layer_order = this.reference_layer.order; + this.old_target_order = this.reference_target.order; + this.reference_layer.order = this.old_target_order; + this.reference_target.order = this.old_layer_order; app.Layers.render(); app.GUI.GUI_layers.render_layers(); - } + } - async undo() { - super.undo(); - if (this.reference_layer) { - this.reference_layer.order = this.old_layer_order; - this.reference_layer = null; - } - if (this.reference_target) { - this.reference_target.order = this.old_target_order; - this.reference_target = null; - } - app.Layers.render(); + async undo() { + super.undo(); + if (this.reference_layer) { + this.reference_layer.order = this.old_layer_order; + this.reference_layer = null; + } + if (this.reference_target) { + this.reference_target.order = this.old_target_order; + this.reference_target = null; + } + app.Layers.render(); app.GUI.GUI_layers.render_layers(); - } + } - free() { - this.reference_layer = null; - this.reference_target = null; - } + free() { + this.reference_layer = null; + this.reference_target = null; + } } \ No newline at end of file diff --git a/src/js/actions/reset-layers.js b/src/js/actions/reset-layers.js index ea289fc..1620043 100644 --- a/src/js/actions/reset-layers.js +++ b/src/js/actions/reset-layers.js @@ -3,64 +3,64 @@ import config from '../config.js'; import { Base_action } from './base.js'; export class Reset_layers_action extends Base_action { - /* + /* * removes all layers */ - constructor(auto_insert) { - super('reset_layers', 'Reset Layers'); - this.auto_insert = auto_insert; - this.previous_auto_increment = null; - this.delete_actions = null; - this.insert_action = null; - } - async do() { - super.do(); - const auto_insert = this.auto_insert; - this.previous_auto_increment = app.Layers.auto_increment; + constructor(auto_insert) { + super('reset_layers', 'Reset Layers'); + this.auto_insert = auto_insert; + this.previous_auto_increment = null; + this.delete_actions = null; + this.insert_action = null; + } + async do() { + super.do(); + const auto_insert = this.auto_insert; + this.previous_auto_increment = app.Layers.auto_increment; - this.delete_actions = []; - for (let i = config.layers.length - 1; i >= 0; i--) { - const delete_action = new app.Actions.Delete_layer_action(config.layers[i].id, true); - await delete_action.do(); - this.delete_actions.push(delete_action); + this.delete_actions = []; + for (let i = config.layers.length - 1; i >= 0; i--) { + const delete_action = new app.Actions.Delete_layer_action(config.layers[i].id, true); + await delete_action.do(); + this.delete_actions.push(delete_action); } app.Layers.auto_increment = 1; if (auto_insert != undefined && auto_insert === true) { - const settings = {}; - this.insert_action = new app.Actions.Insert_layer_action(settings); - await this.insert_action.do(); + const settings = {}; + this.insert_action = new app.Actions.Insert_layer_action(settings); + await this.insert_action.do(); } app.Layers.render(); app.GUI.GUI_layers.render_layers(); - } - async undo() { - super.undo(); - if (this.insert_action) { - await this.insert_action.undo(); - this.insert_action.free(); - this.insert_action = null; - } - for (let i = this.delete_actions.length - 1; i >= 0; i--) { - await this.delete_actions[i].undo(); - this.delete_actions[i].free(); - } - app.Layers.auto_increment = this.previous_auto_increment; + } + async undo() { + super.undo(); + if (this.insert_action) { + await this.insert_action.undo(); + this.insert_action.free(); + this.insert_action = null; + } + for (let i = this.delete_actions.length - 1; i >= 0; i--) { + await this.delete_actions[i].undo(); + this.delete_actions[i].free(); + } + app.Layers.auto_increment = this.previous_auto_increment; - app.Layers.render(); + app.Layers.render(); app.GUI.GUI_layers.render_layers(); - } - free() { - if (this.insert_action) { - this.insert_action.free(); - this.insert_action = null; - } - if (this.delete_actions) { - for (let action of this.delete_actions) { - action.free(); - } - this.delete_actions = null; - } - } + } + free() { + if (this.insert_action) { + this.insert_action.free(); + this.insert_action = null; + } + if (this.delete_actions) { + for (let action of this.delete_actions) { + action.free(); + } + this.delete_actions = null; + } + } } \ No newline at end of file diff --git a/src/js/actions/reset-selection.js b/src/js/actions/reset-selection.js index 577c880..d258a05 100644 --- a/src/js/actions/reset-selection.js +++ b/src/js/actions/reset-selection.js @@ -5,53 +5,53 @@ import { Base_action } from './base.js'; export class Reset_selection_action extends Base_action { /** * Sets the selection to empty - * - * @prop {object} [mirror_selection_settings] - Optional object to also set to an empty selection object + * + * @prop {object} [mirror_selection_settings] - Optional object to also set to an empty selection object */ constructor(mirror_selection_settings) { - super('reset_selection', 'Reset Selection'); - this.mirror_selection_settings = mirror_selection_settings; - this.settings_reference = null; - this.old_settings_data = null; + super('reset_selection', 'Reset Selection'); + this.mirror_selection_settings = mirror_selection_settings; + this.settings_reference = null; + this.old_settings_data = null; } async do() { - super.do(); - this.settings_reference = app.Layers.Base_selection.find_settings(); - this.old_settings_data = JSON.parse(JSON.stringify(this.settings_reference.data)); - this.settings_reference.data = { - x: null, - y: null, - width: null, - height: null - } - if (this.mirror_selection_settings) { - this.mirror_selection_settings.x = null; - this.mirror_selection_settings.y = null; - this.mirror_selection_settings.width = null; - this.mirror_selection_settings.height = null; - } + super.do(); + this.settings_reference = app.Layers.Base_selection.find_settings(); + this.old_settings_data = JSON.parse(JSON.stringify(this.settings_reference.data)); + this.settings_reference.data = { + x: null, + y: null, + width: null, + height: null + } + if (this.mirror_selection_settings) { + this.mirror_selection_settings.x = null; + this.mirror_selection_settings.y = null; + this.mirror_selection_settings.width = null; + this.mirror_selection_settings.height = null; + } config.need_render = true; - } + } - async undo() { - super.undo(); - if (this.old_settings_data) { - for (let prop of ['x', 'y', 'width', 'height']) { - this.settings_reference.data[prop] = this.old_settings_data[prop]; - if (this.mirror_selection_settings) { - this.mirror_selection_settings[prop] = this.old_settings_data[prop]; - } - } - } - this.settings_reference = null; - this.old_settings_data = null; + async undo() { + super.undo(); + if (this.old_settings_data) { + for (let prop of ['x', 'y', 'width', 'height']) { + this.settings_reference.data[prop] = this.old_settings_data[prop]; + if (this.mirror_selection_settings) { + this.mirror_selection_settings[prop] = this.old_settings_data[prop]; + } + } + } + this.settings_reference = null; + this.old_settings_data = null; config.need_render = true; - } + } - free() { - this.settings_reference = null; - this.old_settings_data = null; - this.mirror_selection_settings = null; - } + free() { + this.settings_reference = null; + this.old_settings_data = null; + this.mirror_selection_settings = null; + } } \ No newline at end of file diff --git a/src/js/actions/select-layer.js b/src/js/actions/select-layer.js index 93e1f5b..f1252be 100644 --- a/src/js/actions/select-layer.js +++ b/src/js/actions/select-layer.js @@ -9,49 +9,49 @@ export class Select_layer_action extends Base_action { * @param {int} layer_id */ constructor(layer_id, ignore_same_selection = false) { - super('select_layer', 'Select Layer'); - this.reset_selection_action = null; - this.layer_id = parseInt(layer_id); - this.ignore_same_selection = ignore_same_selection; - this.old_layer = null; + super('select_layer', 'Select Layer'); + this.reset_selection_action = null; + this.layer_id = parseInt(layer_id); + this.ignore_same_selection = ignore_same_selection; + this.old_layer = null; } async do() { - super.do(); + super.do(); - let old_layer = config.layer; - let new_layer = app.Layers.get_layer(this.layer_id); + let old_layer = config.layer; + let new_layer = app.Layers.get_layer(this.layer_id); - if (old_layer !== new_layer) { - this.old_layer = old_layer; - config.layer = new_layer; - } else if (!this.ignore_same_selection) { - throw new Error('Aborted - Layer already selected'); - } + if (old_layer !== new_layer) { + this.old_layer = old_layer; + config.layer = new_layer; + } else if (!this.ignore_same_selection) { + throw new Error('Aborted - Layer already selected'); + } - this.reset_selection_action = new app.Actions.Reset_selection_action(); - await this.reset_selection_action.do(); + this.reset_selection_action = new app.Actions.Reset_selection_action(); + await this.reset_selection_action.do(); - app.Layers.render(); + app.Layers.render(); app.GUI.GUI_layers.render_layers(); - } + } - async undo() { - super.undo(); + async undo() { + super.undo(); - if (this.reset_selection_action) { - await this.reset_selection_action.undo(); - this.reset_selection_action = null; - } + if (this.reset_selection_action) { + await this.reset_selection_action.undo(); + this.reset_selection_action = null; + } - config.layer = this.old_layer; - this.old_layer = null; + config.layer = this.old_layer; + this.old_layer = null; - app.Layers.render(); + app.Layers.render(); app.GUI.GUI_layers.render_layers(); - } + } - free() { - this.old_layer = null; - } + free() { + this.old_layer = null; + } } \ No newline at end of file diff --git a/src/js/actions/select-next-layer.js b/src/js/actions/select-next-layer.js index 9d7eaaf..d16ecc6 100644 --- a/src/js/actions/select-next-layer.js +++ b/src/js/actions/select-next-layer.js @@ -3,31 +3,31 @@ import config from './../config.js'; import { Base_action } from './base.js'; export class Select_next_layer_action extends Base_action { - constructor(reference_layer_id) { - super('select_next_layer', 'Select Next Layer'); - this.reference_layer_id = reference_layer_id; - this.old_config_layer = null; - } + constructor(reference_layer_id) { + super('select_next_layer', 'Select Next Layer'); + this.reference_layer_id = reference_layer_id; + this.old_config_layer = null; + } - async do() { - super.do(); - const next_layer = app.Layers.find_next(this.reference_layer_id); - if (!next_layer) { - throw new Error('Aborted - Next layer to select not found'); - } - this.old_config_layer = config.layer; - config.layer = next_layer; + async do() { + super.do(); + const next_layer = app.Layers.find_next(this.reference_layer_id); + if (!next_layer) { + throw new Error('Aborted - Next layer to select not found'); + } + this.old_config_layer = config.layer; + config.layer = next_layer; - app.Layers.render(); + app.Layers.render(); app.GUI.GUI_layers.render_layers(); - } + } - async undo() { - super.undo(); - config.layer = this.old_config_layer; - this.old_config_layer = null; + async undo() { + super.undo(); + config.layer = this.old_config_layer; + this.old_config_layer = null; - app.Layers.render(); + app.Layers.render(); app.GUI.GUI_layers.render_layers(); - } + } } \ No newline at end of file diff --git a/src/js/actions/select-previous-layer.js b/src/js/actions/select-previous-layer.js index 246940d..819edbc 100644 --- a/src/js/actions/select-previous-layer.js +++ b/src/js/actions/select-previous-layer.js @@ -3,31 +3,31 @@ import config from './../config.js'; import { Base_action } from './base.js'; export class Select_previous_layer_action extends Base_action { - constructor(reference_layer_id) { - super('select_previous_layer', 'Select Previous Layer'); - this.reference_layer_id = reference_layer_id; - this.old_config_layer = null; - } + constructor(reference_layer_id) { + super('select_previous_layer', 'Select Previous Layer'); + this.reference_layer_id = reference_layer_id; + this.old_config_layer = null; + } - async do() { - super.do(); - const previous_layer = app.Layers.find_previous(this.reference_layer_id); - if (!previous_layer) { - throw new Error('Aborted - Previous layer to select not found'); - } - this.old_config_layer = config.layer; - config.layer = previous_layer; + async do() { + super.do(); + const previous_layer = app.Layers.find_previous(this.reference_layer_id); + if (!previous_layer) { + throw new Error('Aborted - Previous layer to select not found'); + } + this.old_config_layer = config.layer; + config.layer = previous_layer; - app.Layers.render(); + app.Layers.render(); app.GUI.GUI_layers.render_layers(); - } + } - async undo() { - super.undo(); - config.layer = this.old_config_layer; - this.old_config_layer = null; + async undo() { + super.undo(); + config.layer = this.old_config_layer; + this.old_config_layer = null; - app.Layers.render(); + app.Layers.render(); app.GUI.GUI_layers.render_layers(); - } + } } \ No newline at end of file diff --git a/src/js/actions/set-object-property.js b/src/js/actions/set-object-property.js index f9e8a14..558bbb8 100644 --- a/src/js/actions/set-object-property.js +++ b/src/js/actions/set-object-property.js @@ -3,33 +3,33 @@ import config from './../config.js'; import { Base_action } from './base.js'; export class Set_object_property_action extends Base_action { - /** + /** * Sets a generic object property. I recommend against using this as it's generally a hack for edge cases. * - * @param {string} layer_id + * @param {string} layer_id * @param {object} settings */ constructor(object, property_name, value) { - super('set_object_property', 'Set Object Property'); - this.object = object; - this.property_name = property_name; - this.value = value; - this.old_value = null; - } + super('set_object_property', 'Set Object Property'); + this.object = object; + this.property_name = property_name; + this.value = value; + this.old_value = null; + } - async do() { - super.do(); - this.old_value = this.object[this.property_name]; - this.object[this.property_name] = this.value; - } + async do() { + super.do(); + this.old_value = this.object[this.property_name]; + this.object[this.property_name] = this.value; + } - async undo() { - super.undo(); - this.object[this.property_name] = this.old_value; - this.old_value = null; - } + async undo() { + super.undo(); + this.object[this.property_name] = this.old_value; + this.old_value = null; + } - free() { - this.object = null; - } + free() { + this.object = null; + } } \ No newline at end of file diff --git a/src/js/actions/set-selection.js b/src/js/actions/set-selection.js index 22bbb55..8aacf0c 100644 --- a/src/js/actions/set-selection.js +++ b/src/js/actions/set-selection.js @@ -7,51 +7,51 @@ export class Set_selection_action extends Base_action { * Sets the selection to the specified position and dimensions */ constructor(x, y, width, height, old_settings_override) { - super('set_selection', 'Set Selection'); - this.x = x; - this.y = y; - this.width = width; - this.height = height; - this.settings_reference = null; - this.old_settings_data = null; - this.old_settings_override = old_settings_override ? JSON.parse(JSON.stringify(old_settings_override)) || null : null; + super('set_selection', 'Set Selection'); + this.x = x; + this.y = y; + this.width = width; + this.height = height; + this.settings_reference = null; + this.old_settings_data = null; + this.old_settings_override = old_settings_override ? JSON.parse(JSON.stringify(old_settings_override)) || null : null; } async do() { - super.do(); - this.settings_reference = app.Layers.Base_selection.find_settings(); - this.old_settings_data = JSON.parse(JSON.stringify(this.settings_reference.data)); - if (this.x != null) - this.settings_reference.data.x = this.x; - if (this.y != null) - this.settings_reference.data.y = this.y; - if (this.width != null) - this.settings_reference.data.width = this.width; - if (this.height != null) - this.settings_reference.data.height = this.height; + super.do(); + this.settings_reference = app.Layers.Base_selection.find_settings(); + this.old_settings_data = JSON.parse(JSON.stringify(this.settings_reference.data)); + if (this.x != null) + this.settings_reference.data.x = this.x; + if (this.y != null) + this.settings_reference.data.y = this.y; + if (this.width != null) + this.settings_reference.data.width = this.width; + if (this.height != null) + this.settings_reference.data.height = this.height; - config.need_render = true; - } - - async undo() { - super.undo() - if (this.old_settings_override) { - for (let prop in this.old_settings_override) { - this.settings_reference.data[prop] = this.old_settings_override[prop]; - } - } else { - for (let prop in this.old_settings_data) { - this.settings_reference.data[prop] = this.old_settings_data[prop]; - } - } - this.settings_reference = null; - this.old_settings_data = null; config.need_render = true; - } + } - free() { - this.settings_reference = null; - this.old_settings_override = null; - this.old_settings_data = null; - } + async undo() { + super.undo() + if (this.old_settings_override) { + for (let prop in this.old_settings_override) { + this.settings_reference.data[prop] = this.old_settings_override[prop]; + } + } else { + for (let prop in this.old_settings_data) { + this.settings_reference.data[prop] = this.old_settings_data[prop]; + } + } + this.settings_reference = null; + this.old_settings_data = null; + config.need_render = true; + } + + free() { + this.settings_reference = null; + this.old_settings_override = null; + this.old_settings_data = null; + } } \ No newline at end of file diff --git a/src/js/actions/stop-animation.js b/src/js/actions/stop-animation.js index 4d33fa4..40db6d2 100644 --- a/src/js/actions/stop-animation.js +++ b/src/js/actions/stop-animation.js @@ -7,14 +7,14 @@ export class Stop_animation_action extends Base_action { * Stops the currently playing animation, both do and undo states will stop animation */ constructor(reset_layer_visibility) { - super('stop_animation', 'Stop Animation'); - this.reset_layer_visibility = !!reset_layer_visibility; + super('stop_animation', 'Stop Animation'); + this.reset_layer_visibility = !!reset_layer_visibility; } - async do() { - super.do(); - const animation_tool = app.GUI.GUI_tools.tools_modules.animation; - var params = animation_tool.getParams(); + async do() { + super.do(); + const animation_tool = app.GUI.GUI_tools.tools_modules.animation; + var params = animation_tool.getParams(); if (animation_tool.intervalID == null) return; @@ -23,21 +23,21 @@ export class Stop_animation_action extends Base_action { animation_tool.index = 0; animation_tool.GUI_tools.show_action_attributes(); - // make all visible - if (this.reset_layer_visibility) { - for (let i in config.layers) { - config.layers[i].visible = true; - } - } + // make all visible + if (this.reset_layer_visibility) { + for (let i in config.layers) { + config.layers[i].visible = true; + } + } animation_tool.Base_gui.GUI_layers.render_layers(); config.need_render = true; - } + } - async undo() { - super.undo(); - const animation_tool = app.GUI.GUI_tools.tools_modules.animation; - var params = animation_tool.getParams(); + async undo() { + super.undo(); + const animation_tool = app.GUI.GUI_tools.tools_modules.animation; + var params = animation_tool.getParams(); if (animation_tool.intervalID == null) return; @@ -46,14 +46,14 @@ export class Stop_animation_action extends Base_action { animation_tool.index = 0; animation_tool.GUI_tools.show_action_attributes(); - // make all visible - if (this.reset_layer_visibility) { - for (let i in config.layers) { - config.layers[i].visible = true; - } - } + // make all visible + if (this.reset_layer_visibility) { + for (let i in config.layers) { + config.layers[i].visible = true; + } + } animation_tool.Base_gui.GUI_layers.render_layers(); config.need_render = true; - } + } } \ No newline at end of file diff --git a/src/js/actions/toggle-layer-visibility.js b/src/js/actions/toggle-layer-visibility.js index 910dabb..fa753c3 100644 --- a/src/js/actions/toggle-layer-visibility.js +++ b/src/js/actions/toggle-layer-visibility.js @@ -10,28 +10,28 @@ export class Toggle_layer_visibility_action extends Base_action { */ constructor(layer_id) { super('toggle_layer_visibility', 'Toggle Layer Visibility'); - this.layer_id = parseInt(layer_id); - this.old_visible = null; + this.layer_id = parseInt(layer_id); + this.old_visible = null; } async do() { super.do(); - const layer = app.Layers.get_layer(this.layer_id); - this.old_visible = layer.visible; + const layer = app.Layers.get_layer(this.layer_id); + this.old_visible = layer.visible; if (layer.visible == false) layer.visible = true; else layer.visible = false; app.Layers.render(); app.GUI.GUI_layers.render_layers(); - } + } - async undo() { - super.undo(); - const layer = app.Layers.get_layer(this.layer_id); - layer.visible = this.old_visible; - this.old_visible = null; + async undo() { + super.undo(); + const layer = app.Layers.get_layer(this.layer_id); + layer.visible = this.old_visible; + this.old_visible = null; app.Layers.render(); app.GUI.GUI_layers.render_layers(); - } + } } \ No newline at end of file diff --git a/src/js/actions/update-config.js b/src/js/actions/update-config.js index 72d242c..d0c0409 100644 --- a/src/js/actions/update-config.js +++ b/src/js/actions/update-config.js @@ -3,35 +3,35 @@ import config from './../config.js'; import { Base_action } from './base.js'; export class Update_config_action extends Base_action { - /** + /** * Updates the app config with the provided settings * * @param {object} settings */ constructor(settings) { - super('update_config', 'Update Config'); - this.settings = settings; - this.old_settings = {}; - } + super('update_config', 'Update Config'); + this.settings = settings; + this.old_settings = {}; + } - async do() { - super.do(); - for (let i in this.settings) { - this.old_settings[i] = config[i]; - config[i] = this.settings[i]; - } - } + async do() { + super.do(); + for (let i in this.settings) { + this.old_settings[i] = config[i]; + config[i] = this.settings[i]; + } + } - async undo() { - super.undo(); - for (let i in this.old_settings) { - config[i] = this.old_settings[i]; - } - this.old_settings = {}; - } + async undo() { + super.undo(); + for (let i in this.old_settings) { + config[i] = this.old_settings[i]; + } + this.old_settings = {}; + } - free() { - this.settings = null; - this.old_settings = null; - } + free() { + this.settings = null; + this.old_settings = null; + } } \ No newline at end of file diff --git a/src/js/actions/update-layer-image.js b/src/js/actions/update-layer-image.js index 17db9b4..0941417 100644 --- a/src/js/actions/update-layer-image.js +++ b/src/js/actions/update-layer-image.js @@ -15,135 +15,135 @@ export class Update_layer_image_action extends Base_action { * @param {int} layer_id (optional) */ constructor(canvas, layer_id) { - super('update_layer_image', 'Update Layer Image'); - this.canvas = canvas; - if (layer_id == null) + super('update_layer_image', 'Update Layer Image'); + this.canvas = canvas; + if (layer_id == null) layer_id = config.layer.id; - this.layer_id = parseInt(layer_id); - this.reference_layer = null; - this.old_image_id = null; - this.new_image_id = null; - this.old_link_database_id = null; + this.layer_id = parseInt(layer_id); + this.reference_layer = null; + this.old_image_id = null; + this.new_image_id = null; + this.old_link_database_id = null; } - async do() { - super.do(); - this.reference_layer = app.Layers.get_layer(this.layer_id); - if (!this.reference_layer) { - throw new Error('Aborted - layer with specified id doesn\'t exist'); - } + async do() { + super.do(); + this.reference_layer = app.Layers.get_layer(this.layer_id); + if (!this.reference_layer) { + throw new Error('Aborted - layer with specified id doesn\'t exist'); + } if (this.reference_layer.type != 'image'){ alertify.error('Error: layer must be image.'); throw new Error('Aborted - layer is not an image'); } - // Get data url representation of image - let canvas_data_url; - if (this.new_image_id) { - try { - canvas_data_url = await image_store.get(this.new_image_id); - } catch (error) { - throw new Error('Aborted - problem retrieving cached image from database'); - } - } else if (this.canvas) { - if (Helper.is_edge_or_ie() == false && typeof(FileReader) !== 'undefined') { - // Update image using blob and FileReader (async) - await new Promise((resolve) => { - this.canvas.toBlob((blob) => { - var reader = new FileReader(); - reader.onloadend = () => { - canvas_data_url = reader.result; - resolve(); - } - reader.readAsDataURL(blob); - }, 'image/png'); - }); - } - else { - // Slow way for IE, Edge - canvas_data_url = this.canvas.toDataURL(); - } - } + // Get data url representation of image + let canvas_data_url; + if (this.new_image_id) { + try { + canvas_data_url = await image_store.get(this.new_image_id); + } catch (error) { + throw new Error('Aborted - problem retrieving cached image from database'); + } + } else if (this.canvas) { + if (Helper.is_edge_or_ie() == false && typeof(FileReader) !== 'undefined') { + // Update image using blob and FileReader (async) + await new Promise((resolve) => { + this.canvas.toBlob((blob) => { + var reader = new FileReader(); + reader.onloadend = () => { + canvas_data_url = reader.result; + resolve(); + } + reader.readAsDataURL(blob); + }, 'image/png'); + }); + } + else { + // Slow way for IE, Edge + canvas_data_url = this.canvas.toDataURL(); + } + } - // Store data url in database - try { - if (!this.old_image_id) { - if (this.reference_layer._link_database_id) { - this.old_image_id = this.reference_layer._link_database_id; - } else { - this.old_image_id = await image_store.add(this.reference_layer.link.src); - } - } - if (!this.new_image_id) { - this.new_image_id = await image_store.add(canvas_data_url); - } - } catch (error) { - console.log(error); - requestAnimationFrame(() => { - app.State.free(0, this.database_estimate || 1) - }); - } + // Store data url in database + try { + if (!this.old_image_id) { + if (this.reference_layer._link_database_id) { + this.old_image_id = this.reference_layer._link_database_id; + } else { + this.old_image_id = await image_store.add(this.reference_layer.link.src); + } + } + if (!this.new_image_id) { + this.new_image_id = await image_store.add(canvas_data_url); + } + } catch (error) { + console.log(error); + requestAnimationFrame(() => { + app.State.free(0, this.database_estimate || 1) + }); + } - // Estimate storage size - try { - this.database_estimate = new Blob([await image_store.get(this.old_image_id)]).size; - } catch (e) {} + // Estimate storage size + try { + this.database_estimate = new Blob([await image_store.get(this.old_image_id)]).size; + } catch (e) {} - // Assign layer properties - this.reference_layer.link.src = canvas_data_url; - this.old_link_database_id = this.reference_layer._link_database_id; - this.reference_layer._link_database_id = this.new_image_id; + // Assign layer properties + this.reference_layer.link.src = canvas_data_url; + this.old_link_database_id = this.reference_layer._link_database_id; + this.reference_layer._link_database_id = this.new_image_id; - this.canvas = null; + this.canvas = null; config.need_render = true; - } + } - async undo() { - super.undo(); + async undo() { + super.undo(); - // Estimate storage size - try { - this.database_estimate = new Blob([this.reference_layer.link.src]).size; - } catch (e) {} + // Estimate storage size + try { + this.database_estimate = new Blob([this.reference_layer.link.src]).size; + } catch (e) {} - // Restore old image - if (this.old_image_id != null) { - try { - this.reference_layer.link.src = await image_store.get(this.old_image_id); - } catch (error) { - throw new Error('Failed to retrieve image from store'); - } - } - this.reference_layer._link_database_id = this.old_link_database_id; - this.reference_layer = null; - config.need_render = true; - } + // Restore old image + if (this.old_image_id != null) { + try { + this.reference_layer.link.src = await image_store.get(this.old_image_id); + } catch (error) { + throw new Error('Failed to retrieve image from store'); + } + } + this.reference_layer._link_database_id = this.old_link_database_id; + this.reference_layer = null; + config.need_render = true; + } - async free() { - let has_error = false; - if (this.new_image_id != null) { - try { - await image_store.delete(this.new_image_id); - } catch (error) { - has_error = true; - } - this.new_image_id = null; - } - if (this.is_done || !this.old_link_database_id) { - if (this.old_image_id != null) { - try { - await image_store.delete(this.old_image_id); - } catch (error) { - has_error = true; - } - this.old_image_id = null; - } - } - this.canvas = null; - this.old_link_database_id = null; - this.reference_layer = null; - if (has_error) { + async free() { + let has_error = false; + if (this.new_image_id != null) { + try { + await image_store.delete(this.new_image_id); + } catch (error) { + has_error = true; + } + this.new_image_id = null; + } + if (this.is_done || !this.old_link_database_id) { + if (this.old_image_id != null) { + try { + await image_store.delete(this.old_image_id); + } catch (error) { + has_error = true; + } + this.old_image_id = null; + } + } + this.canvas = null; + this.old_link_database_id = null; + this.reference_layer = null; + if (has_error) { alertify.error('A problem occurred while removing undo history. It\'s suggested you save your work and refresh the page in order to free up memory.'); } - } + } } \ No newline at end of file diff --git a/src/js/actions/update-layer.js b/src/js/actions/update-layer.js index 4991905..83166d3 100644 --- a/src/js/actions/update-layer.js +++ b/src/js/actions/update-layer.js @@ -3,65 +3,65 @@ import config from './../config.js'; import { Base_action } from './base.js'; export class Update_layer_action extends Base_action { - /** + /** * Updates an existing layer with the provided settings - * WARNING: If passing objects or arrays into settings, make sure these are new or cloned objects, and not a modified existing object! + * WARNING: If passing objects or arrays into settings, make sure these are new or cloned objects, and not a modified existing object! * - * @param {string} layer_id + * @param {string} layer_id * @param {object} settings */ constructor(layer_id, settings) { - super('update_layer', 'Update Layer'); - this.layer_id = layer_id; - this.settings = settings; - this.reference_layer = null; - this.old_settings = {}; - } + super('update_layer', 'Update Layer'); + this.layer_id = layer_id; + this.settings = settings; + this.reference_layer = null; + this.old_settings = {}; + } - async do() { - super.do(); - this.reference_layer = app.Layers.get_layer(this.layer_id); - if (!this.reference_layer) { - throw new Error('Aborted - layer with specified id doesn\'t exist'); - } - for (let i in this.settings) { - if (i == 'id') - continue; - if (i == 'order') - continue; - this.old_settings[i] = this.reference_layer[i]; - this.reference_layer[i] = this.settings[i]; - } - if (this.reference_layer.type === 'text') { - this.reference_layer._needs_update_data = true; - } - if (this.settings.params || this.settings.width || this.settings.height) { + async do() { + super.do(); + this.reference_layer = app.Layers.get_layer(this.layer_id); + if (!this.reference_layer) { + throw new Error('Aborted - layer with specified id doesn\'t exist'); + } + for (let i in this.settings) { + if (i == 'id') + continue; + if (i == 'order') + continue; + this.old_settings[i] = this.reference_layer[i]; + this.reference_layer[i] = this.settings[i]; + } + if (this.reference_layer.type === 'text') { + this.reference_layer._needs_update_data = true; + } + if (this.settings.params || this.settings.width || this.settings.height) { config.need_render_changed_params = true; - } - config.need_render = true; - } + } + config.need_render = true; + } - async undo() { - super.undo(); - if (this.reference_layer) { - for (let i in this.old_settings) { - this.reference_layer[i] = this.old_settings[i]; - } - if (this.reference_layer.type === 'text') { - this.reference_layer._needs_update_data = true; - } - if (this.old_settings.params || this.old_settings.width || this.old_settings.height) { - config.need_render_changed_params = true; - } - this.old_settings = {}; - } - this.reference_layer = null; - config.need_render = true; - } + async undo() { + super.undo(); + if (this.reference_layer) { + for (let i in this.old_settings) { + this.reference_layer[i] = this.old_settings[i]; + } + if (this.reference_layer.type === 'text') { + this.reference_layer._needs_update_data = true; + } + if (this.old_settings.params || this.old_settings.width || this.old_settings.height) { + config.need_render_changed_params = true; + } + this.old_settings = {}; + } + this.reference_layer = null; + config.need_render = true; + } - free() { - this.settings = null; - this.old_settings = null; - this.reference_layer = null; - } + free() { + this.settings = null; + this.old_settings = null; + this.reference_layer = null; + } } \ No newline at end of file diff --git a/src/js/app.js b/src/js/app.js index 0772ae1..f7f8ee8 100644 --- a/src/js/app.js +++ b/src/js/app.js @@ -1,11 +1,11 @@ // Store singletons for easy access export default { - GUI: null, - Tools: null, - Layers: null, - Config: null, - State: null, - FileOpen: null, - FileSave: null, - Actions: null + GUI: null, + Tools: null, + Layers: null, + Config: null, + State: null, + FileOpen: null, + FileSave: null, + Actions: null }; \ No newline at end of file