Zip-Export: Split by layers option

This commit is contained in:
Max Eden 2015-04-29 20:20:35 +06:00
parent ce8d71f47e
commit 016316518d
2 changed files with 36 additions and 6 deletions

View File

@ -13,6 +13,8 @@
this.pngFilePrefixInput = document.getElementById('zip-prefix-name');
this.pngFilePrefixInput.value = 'sprite_';
this.splitByLayersCheckbox = document.getElementById('zip-split-by-layers');
var downloadButton = document.querySelector('.png-download-button');
this.addEventListener(downloadButton, 'click', this.onPngDownloadButtonClick_);
@ -30,13 +32,35 @@
ns.PngExportController.prototype.onZipButtonClick_ = function () {
var zip = new window.JSZip();
for (var i = 0 ; i < this.piskelController.getFrameCount() ; i++) {
function splittedExport() {
var layers = this.piskelController.getLayers();
for (var j = 0; this.piskelController.hasLayerAt(j); j++) {
var layer = this.piskelController.getLayerAt(j);
for (var i = 0; i < this.piskelController.getFrameCount(); i++) {
var frame = layer.getFrameAt(i);
var canvas = this.getFrameAsCanvas_(frame);
var basename = this.pngFilePrefixInput.value;
var filename = 'l' + j + '_' + basename + (i + 1) + '.png';
zip.file(filename, pskl.utils.CanvasUtils.getBase64FromCanvas(canvas) + '\n', {base64: true});
}
}
}
function mergedExport() {
for (var i = 0; i < this.piskelController.getFrameCount(); i++) {
var frame = this.piskelController.getFrameAt(i);
var canvas = this.getFrameAsCanvas_(frame);
var basename = this.pngFilePrefixInput.value;
var filename = basename + (i + 1) + '.png';
zip.file(filename, pskl.utils.CanvasUtils.getBase64FromCanvas(canvas) + '\n', {base64: true});
}
}
if (this.splitByLayersCheckbox.checked) {
splittedExport.call(this);
} else {
mergedExport.call(this);
}
var fileName = this.getPiskelName_() + '.zip';

View File

@ -15,6 +15,12 @@
<div class="settings-item">
<label for="zip-prefix-name">Prefix:</label>
<input id="zip-prefix-name" type="text" class="textfield" placeholder="PNG file prefix ...">
</div>
<div class="settings-item">
<label>
<input id="zip-split-by-layers" type="checkbox" />
Split by layers
</label>
</div>
<button type="button" class="button button-primary zip-generate-button"/>Download ZIP</button>
</div>