Merge pull request #220 from juliandescottes/enhancement-layers-options

Enhancement layers options
This commit is contained in:
Julian Descottes 2014-09-16 00:10:42 +02:00
commit f7f9587520
14 changed files with 73 additions and 7 deletions

View File

@ -36,7 +36,7 @@ module.exports = function(grunt) {
},
'travis' : {
suite : './test/casperjs/TravisTestSuite.js',
delay : 5000
delay : 10000
}
};

View File

@ -7,4 +7,8 @@
.action-icon.edit-icon {
background-image: url('../img/tools/pen.png');
}
.action-icon.merge-icon {
background-image: url('../img/merge-icon.png');
}

View File

@ -46,22 +46,34 @@
cursor : pointer;
}
.layer-item .edit-icon {
.layer-item .edit-icon, .layer-item .merge-icon {
float: right;
width: 30px;
background-size: 12px;
opacity: 0;
transition : opacity 0.2s;
}
.layer-item:hover .edit-icon {
.layer-item:hover .edit-icon, .layer-item:hover .merge-icon {
opacity : 0.6;
}
.layer-item:hover .edit-icon:hover {
.layer-item:hover .edit-icon:hover, .layer-item:hover .merge-icon:hover {
opacity : 1;
}
.layer-item .edit-icon {
width: 25px;
background-size: 12px;
}
.layer-item .merge-icon {
width: 18px;
background-size: 16px;
}
.layer-item:last-child .merge-icon {
display : none;
}
.layer-item:hover {
background : #222;
}

BIN
src/img/merge-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 438 B

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();

View File

@ -101,6 +101,10 @@
var screenCoordinates = pskl.app.drawingController.getScreenCoordinates(recordEvent.coords.x, recordEvent.coords.y);
event.clientX = screenCoordinates.x;
event.clientY = screenCoordinates.y;
if (pskl.utils.UserAgent.isMac && event.ctrlKey) {
event.metaKey = true;
}
if (event.type == 'mousedown') {
pskl.app.drawingController.onMousedown_(event);
} else if (event.type == 'mouseup') {

View File

@ -73,6 +73,10 @@
this.layers.push(layer);
};
ns.Piskel.prototype.addLayerAt = function (layer, index) {
this.layers.splice(index, 0, layer);
};
ns.Piskel.prototype.moveLayerUp = function (layer) {
var index = this.layers.indexOf(layer);
if (index > -1 && index < this.layers.length-1) {

View File

@ -25,6 +25,18 @@
frames.push(frame);
}
return frames;
},
mergeLayers : function (layerA, layerB) {
var framesA = layerA.getFrames();
var framesB = layerB.getFrames();
var mergedFrames = [];
framesA.forEach(function (frame, index) {
var otherFrame = framesB[index];
mergedFrames.push(pskl.utils.FrameUtils.merge([otherFrame, frame]));
});
var mergedLayer = pskl.model.Layer.fromFrames(layerA.getName(), mergedFrames);
return mergedLayer;
}
};

View File

@ -13,7 +13,8 @@
</div>
<script type="text/template" id="layer-item-template">
<li class="layer-item {{isselected:current-layer-item}}" data-layer-index="{{layerindex}}">{{layername}}
<span class="action-icon edit-icon" title="edit name">&nbsp;</span>
<span class="action-icon edit-icon" title="Edit layer name" rel="tooltip" data-placement="top">&nbsp;</span>
<span class="action-icon merge-icon" title="Merge with layer below" rel="tooltip" data-placement="top">&nbsp;</span>
</li>
</script>
<ul class="layers-list"></ul>

View File

@ -4,6 +4,7 @@
"color.picker.json",
"frames.fun.json",
"layers.fun.json",
"layers.merge.json",
"lighten.darken.json",
"move.json",
"pen.secondary.color.json",

View File

@ -3,6 +3,7 @@
"color.picker.json",
"frames.fun.json",
"layers.fun.json",
"layers.merge.json",
"move.json",
"pen.secondary.color.json",
"squares.circles.json",

File diff suppressed because one or more lines are too long