mirror of
https://github.com/piskelapp/piskel.git
synced 2023-08-10 21:12:52 +03:00
58 lines
1.9 KiB
JavaScript
58 lines
1.9 KiB
JavaScript
(function () {
|
|
var ns = $.namespace('pskl.controller.settings');
|
|
|
|
ns.ResizeController = function (piskelController) {
|
|
this.piskelController = piskelController;
|
|
};
|
|
|
|
ns.ResizeController.prototype.init = function () {
|
|
this.resizeWidth = $('[name=resize-width]');
|
|
this.resizeHeight = $('[name=resize-height]');
|
|
|
|
this.resizeWidth.val(this.piskelController.getWidth());
|
|
this.resizeHeight.val(this.piskelController.getHeight());
|
|
|
|
this.cancelButton = $('.resize-cancel-button');
|
|
this.cancelButton.click(this.onCancelButtonClicked_.bind(this));
|
|
|
|
this.resizeForm = $("[name=resize-form]");
|
|
this.resizeForm.submit(this.onResizeFormSubmit_.bind(this));
|
|
};
|
|
|
|
ns.ResizeController.prototype.onResizeFormSubmit_ = function (evt) {
|
|
evt.originalEvent.preventDefault();
|
|
|
|
var width = parseInt(this.resizeWidth.val(), 10);
|
|
var height = parseInt(this.resizeHeight.val(), 10);
|
|
|
|
var layers = [];
|
|
var fromLayers = this.piskelController.getLayers();
|
|
for (var i = 0 ; i < fromLayers.length ; i++) {
|
|
var frames = [];
|
|
var fromFrames = fromLayers[i].getFrames();
|
|
for (var j = 0 ; j < fromFrames.length ; j++) {
|
|
var frame = new pskl.model.Frame(width, height);
|
|
this.copyFromFrameToFrame(fromFrames[j], frame);
|
|
frames.push(frame);
|
|
}
|
|
var layer = pskl.model.Layer.fromFrames(fromLayers[i].getName(), frames);
|
|
layers.push(layer);
|
|
}
|
|
|
|
var piskel = pskl.model.Piskel.fromLayers(layers, this.piskelController.piskel.getDescriptor());
|
|
pskl.app.piskelController.setPiskel(piskel);
|
|
$.publish(Events.CLOSE_SETTINGS_DRAWER);
|
|
};
|
|
|
|
ns.ResizeController.prototype.copyFromFrameToFrame = function (from, to) {
|
|
from.forEachPixel(function (color, x, y) {
|
|
if (x < to.getWidth() && y < to.getHeight()) {
|
|
to.setPixel(x, y, color);
|
|
}
|
|
});
|
|
};
|
|
|
|
ns.ResizeController.prototype.onCancelButtonClicked_ = function (evt) {
|
|
$.publish(Events.CLOSE_SETTINGS_DRAWER);
|
|
};
|
|
})(); |