From 250f1be0eb0d8721abdcc285aa22bac51cffa4f9 Mon Sep 17 00:00:00 2001 From: Joren Dandois Date: Sat, 4 Jul 2020 01:02:36 +0200 Subject: [PATCH] Added icons to font Added icons to font-icon.css Added lock button to layer --- src/css/font-icon.css | 8 ++++ src/css/fonts/icomoon.eot | Bin 4416 -> 3848 bytes src/css/fonts/icomoon.svg | 40 +++++++++--------- src/css/fonts/icomoon.ttf | Bin 4252 -> 3684 bytes src/css/fonts/icomoon.woff | Bin 4328 -> 3760 bytes src/css/toolbox-layers-list.css | 4 ++ src/js/controller/LayersListController.js | 7 ++- src/js/controller/piskel/PiskelController.js | 7 +++ .../piskel/PublicPiskelController.js | 1 + src/js/model/Layer.js | 12 ++++++ .../arraybuffer/ArrayBufferDeserializer.js | 3 ++ src/templates/layers-list.html | 3 ++ 12 files changed, 65 insertions(+), 20 deletions(-) diff --git a/src/css/font-icon.css b/src/css/font-icon.css index f771603a..61a3e096 100644 --- a/src/css/font-icon.css +++ b/src/css/font-icon.css @@ -94,3 +94,11 @@ .piskel-icon-arrow-down-thin:before { content: "\e60f"; } + +.piskel-icon-lock-locked:before { + content: "\e98f"; +} + +.piskel-icon-lock-unlocked:before { + content: "\e990"; +} diff --git a/src/css/fonts/icomoon.eot b/src/css/fonts/icomoon.eot index f5314adf7b63f3e372c57b1dc2c12280cfbba943..a700c4ddb83e0cb04e1f91f1a3bf10dba4746d10 100644 GIT binary patch literal 3848 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 UBNx8VkqbRgc!7G>AQ}e-07rZHZ~y=R diff --git a/src/css/fonts/icomoon.svg b/src/css/fonts/icomoon.svg index bafc0fee..0a487cd2 100644 --- a/src/css/fonts/icomoon.svg +++ b/src/css/fonts/icomoon.svg @@ -6,23 +6,25 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/css/fonts/icomoon.ttf b/src/css/fonts/icomoon.ttf index 5ae72b63d94aa0e3ec7d7054ec589def6ca9f394..03c369e3da9c89a59bc787ecdb6007cd2faf4bc1 100644 GIT binary patch literal 3684 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 MgOo`~ae~1F042c)8UO$Q literal 4328 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 diff --git a/src/css/toolbox-layers-list.css b/src/css/toolbox-layers-list.css index bcd06b8f..3f7be438 100644 --- a/src/css/toolbox-layers-list.css +++ b/src/css/toolbox-layers-list.css @@ -86,6 +86,10 @@ background : #222; } +.layer-lock { + padding: 6px 0; +} + .layer-item-opacity { padding: 0 8px 0 8px; flex: 0 auto; diff --git a/src/js/controller/LayersListController.js b/src/js/controller/LayersListController.js index 96e32be4..841c0fee 100644 --- a/src/js/controller/LayersListController.js +++ b/src/js/controller/LayersListController.js @@ -125,7 +125,8 @@ 'layername' : layer.getName(), 'layerindex' : index, 'isselected:current-layer-item' : isSelected, - 'opacity' : layer.getOpacity() + 'opacity' : layer.getOpacity(), + 'locked' : layer.locked ? 'locked' : 'unlocked' }); var layerItem = pskl.utils.Template.createFromHTML(layerItemHtml); this.layersListEl.insertBefore(layerItem, this.layersListEl.firstChild); @@ -181,6 +182,10 @@ var layer = this.piskelController.getLayerAt(parseInt(index, 10)); var opacity = window.prompt('Set layer opacity (value between 0 and 1)', layer.getOpacity()); this.piskelController.setLayerOpacityAt(index, opacity); + } else if(el.classList.contains('layer-lock')) { + index = pskl.utils.Dom.getData(el, 'layerIndex'); + var layer = this.piskelController.getLayerAt(parseInt(index, 10)); + this.piskelController.setLayerLockedAt(index, layer.getLocked()); } }; diff --git a/src/js/controller/piskel/PiskelController.js b/src/js/controller/piskel/PiskelController.js index 3e2fe419..ae34643f 100644 --- a/src/js/controller/piskel/PiskelController.js +++ b/src/js/controller/piskel/PiskelController.js @@ -284,6 +284,13 @@ } }; + ns.PiskelController.prototype.setLayerLockedAt = function (index, locked) { + var layer = this.getLayerByIndex(index); + if (layer) { + layer.setLocked(!locked); + } + }; + ns.PiskelController.prototype.mergeDownLayerAt = function (index) { var layer = this.getLayerByIndex(index); var downLayer = this.getLayerByIndex(index - 1); diff --git a/src/js/controller/piskel/PublicPiskelController.js b/src/js/controller/piskel/PublicPiskelController.js index a3a86cfe..4187d507 100644 --- a/src/js/controller/piskel/PublicPiskelController.js +++ b/src/js/controller/piskel/PublicPiskelController.js @@ -37,6 +37,7 @@ this.saveWrap_('moveLayerDown', true); this.saveWrap_('removeCurrentLayer', true); this.saveWrap_('setLayerOpacityAt', true); + this.saveWrap_('setLayerLockedAt', true); this.saveWrap_('toggleFrameVisibilityAt', true); var shortcuts = pskl.service.keyboard.Shortcuts; diff --git a/src/js/model/Layer.js b/src/js/model/Layer.js index 0dba5340..d3f1cece 100644 --- a/src/js/model/Layer.js +++ b/src/js/model/Layer.js @@ -8,6 +8,7 @@ this.name = name; this.frames = []; this.opacity = 1; + this.locked = false; } }; @@ -46,6 +47,17 @@ this.opacity = +opacity.toFixed(3); }; + ns.Layer.prototype.getLocked = function () { + return this.locked; + }; + + ns.Layer.prototype.setLocked = function (locked) { + if (typeof locked !== 'boolean') { + locked = false; + } + this.locked = locked; + } + ns.Layer.prototype.isTransparent = function () { return this.opacity < 1; }; diff --git a/src/js/utils/serialization/arraybuffer/ArrayBufferDeserializer.js b/src/js/utils/serialization/arraybuffer/ArrayBufferDeserializer.js index 2ba9bd8b..41745aca 100644 --- a/src/js/utils/serialization/arraybuffer/ArrayBufferDeserializer.js +++ b/src/js/utils/serialization/arraybuffer/ArrayBufferDeserializer.js @@ -79,6 +79,7 @@ var dataUriLengthFirstHalf = arr16[currentIndex + 3]; var dataUriLengthSecondHalf = arr16[currentIndex + 4]; var dataUriLength = (dataUriLengthSecondHalf >>> 0) | (dataUriLengthFirstHalf << 16 >>> 0); + var locked = false; // Name var layerName = ''; @@ -97,6 +98,7 @@ layer.name = layerName; layer.opacity = opacity; + layer.locked = locked; layer.frameCount = frameCount; layer.dataUri = dataUri; layers.push(layer); @@ -128,6 +130,7 @@ var nlayer = new pskl.model.Layer(layer.name); layer.model = nlayer; nlayer.setOpacity(layer.opacity); + nlayer.setLocked(layer.locked); piskel.addLayer(nlayer); loadLayerImage.bind(this, layer, callback)(); diff --git a/src/templates/layers-list.html b/src/templates/layers-list.html index e6628076..11e6c8b8 100644 --- a/src/templates/layers-list.html +++ b/src/templates/layers-list.html @@ -37,6 +37,9 @@
  • {{layername}} + + α