Feature : merge layers

Added feature to merge a layer with the layer below
Done at #jsconfeu2014 :)

New icon in icons : merge-icon.png
TODO : reorder the icons folder, it's waaaaaaay too messy !!
This commit is contained in:
juliandescottes
2014-09-13 20:10:05 +02:00
parent 90845b3a62
commit 4ed7338f25
9 changed files with 65 additions and 6 deletions

View File

@ -67,6 +67,9 @@
} else if (el.classList.contains('edit-icon')) {
index = el.parentNode.dataset.layerIndex;
this.renameLayerAt_(index);
} else if (el.classList.contains('merge-icon')) {
index = el.parentNode.dataset.layerIndex;
this.mergeDownLayerAt_(index);
}
};
@ -79,6 +82,11 @@
}
};
ns.LayersListController.prototype.mergeDownLayerAt_ = function (index) {
this.piskelController.mergeDownLayerAt(index);
this.renderLayerList_();
};
ns.LayersListController.prototype.onButtonClick_ = function (button) {
var action = button.getAttribute('data-action');
if (action == 'up') {

View File

@ -205,6 +205,18 @@
}
};
ns.PiskelController.prototype.mergeDownLayerAt = function (index) {
var layer = this.getLayerByIndex(index);
var downLayer = this.getLayerByIndex(index-1);
if (layer && downLayer) {
var mergedLayer = pskl.utils.LayerUtils.mergeLayers(layer, downLayer);
this.removeLayerAt(index);
this.piskel.addLayerAt(mergedLayer, index);
this.removeLayerAt(index-1);
this.selectLayer(mergedLayer);
}
};
ns.PiskelController.prototype.generateLayerName_ = function () {
var name = "Layer " + this.layerIdCounter;
while (this.hasLayerForName_(name)) {

View File

@ -99,6 +99,12 @@
$.publish(Events.PISKEL_RESET);
};
ns.PublicPiskelController.prototype.mergeDownLayerAt = function (index) {
this.raiseSaveStateEvent_(this.piskelController.mergeDownLayerAt, [index]);
this.piskelController.mergeDownLayerAt(index);
$.publish(Events.PISKEL_RESET);
};
ns.PublicPiskelController.prototype.moveLayerUp = function () {
this.raiseSaveStateEvent_(this.piskelController.moveLayerUp, []);
this.piskelController.moveLayerUp();