6 Commits

12 changed files with 441 additions and 86 deletions

View File

@ -10,7 +10,7 @@ SETLOCAL
set MISC_FOLDER=%PISKEL_HOME%\misc
set RELEASES_FOLDER=%PISKEL_HOME%\dest\desktop
set DEST_FOLDER=%RELEASES_FOLDER%\piskel\win64
set DEST_FOLDER=%RELEASES_FOLDER%\piskel\win32
ECHO "Updating Piskel icon -- Using Resource Hacker"
%RESOURCE_HACKER_PATH%\ResHacker -addoverwrite "%DEST_FOLDER%\piskel.exe", "%DEST_FOLDER%\piskel-logo.exe", "%MISC_FOLDER%\desktop\logo.ico", ICONGROUP, IDR_MAINFRAME, 1033

View File

@ -3,7 +3,7 @@
"name": "piskel",
"main": "./dest/index.html",
"description": "Web based 2d animations editor",
"version": "0.5.0",
"version": "0.5.2",
"homepage": "http://github.com/juliandescottes/piskel",
"repository": {
"type": "git",

View File

@ -23,8 +23,8 @@
-o-transition: all 500ms ease-out;
transition: all 500ms ease-out;
background-image: linear-gradient(45deg, rgba(0,0,0, 0.8) 25%, transparent 25%, transparent 75%, rgba(0,0,0, 0.8) 75%, rgba(0,0,0, 0.8)),
linear-gradient(-45deg, rgba(0,0,0, 0.8) 25%, transparent 25%, transparent 75%, rgba(0,0,0, 0.8) 75%, rgba(0,0,0, 0.8));
background-image: linear-gradient(45deg, #1D1D1D 20%, transparent 25%, transparent 75%, #1D1D1D 80%, #1D1D1D),
linear-gradient(-45deg, #1D1D1D 20%, transparent 25%, transparent 75%, #1D1D1D 80%, #1D1D1D);
background-size: 29px 45px;
background-repeat: repeat-x;
background-position-x: 3px;

View File

@ -21,7 +21,6 @@
ns.PopupPreviewController.prototype.open = function () {
if (!this.isOpen()) {
this.popup = window.open('about:blank', '', 'width=320,height=320');
this.popup.document.body.innerHTML = pskl.utils.Template.get('popup-preview-partial');
window.setTimeout(this.onPopupLoaded.bind(this), 500);
} else {
this.popup.focus();
@ -30,6 +29,7 @@
ns.PopupPreviewController.prototype.onPopupLoaded = function () {
this.popup.document.title = POPUP_TITLE;
this.popup.document.body.innerHTML = pskl.utils.Template.get('popup-preview-partial');
pskl.utils.Event.addEventListener(this.popup, 'resize', this.onWindowResize_, this);
pskl.utils.Event.addEventListener(this.popup, 'unload', this.onPopupClosed_, this);
var container = this.popup.document.querySelector('.preview-container');

View File

@ -26,7 +26,6 @@
}
ns.GifExportController.prototype.init = function () {
this.optionTemplate_ = pskl.utils.Template.get('gif-export-option-template');
this.uploadStatusContainerEl = document.querySelector('.gif-upload-status');
this.previewContainerEl = document.querySelector('.gif-export-preview');

File diff suppressed because one or more lines are too long

View File

@ -48,15 +48,32 @@
}
};
var batchAll = function (frames, job) {
var batches = [];
frames = frames.slice(0);
while (frames.length) {
batches.push(frames.splice(0, 10));
}
var result = Q([]);
batches.forEach(function (batch) {
result = result.then(function (results) {
return Q.all(batch.map(job)).then(function (partials) {
return results.concat(partials);
});
});
});
return result;
};
ns.CurrentColorsService.prototype.updateCurrentColors_ = function () {
var layers = this.piskelController.getLayers();
var frames = layers.map(function (l) {return l.getFrames();}).reduce(function (p, n) {return p.concat(n);});
Q.all(
frames.map(function (frame) {
return this.cachedFrameProcessor.get(frame);
}.bind(this))
).done(function (results) {
var job = function (frame) {
return this.cachedFrameProcessor.get(frame);
}.bind(this);
batchAll(frames, job).then(function (results) {
var colors = {};
results.forEach(function (result) {
Object.keys(result).forEach(function (color) {

View File

@ -1,43 +1 @@
(function () {
var flipFrame = function (frame, horizontal, vertical) {
var clone = frame.clone();
var w = frame.getWidth();
var h = frame.getHeight();
clone.forEachPixel(function (color, x, y) {
if (horizontal) {
x = w - x - 1;
}
if (vertical) {
y = h - y - 1;
}
frame.pixels[x][y] = color;
});
frame.version++;
};
window.flip = function (horizontal, vertical) {
var currentFrameIndex = pskl.app.piskelController.getCurrentFrameIndex();
var layers = pskl.app.piskelController.getLayers();
layers.forEach(function (layer) {
flipFrame(layer.getFrameAt(currentFrameIndex), horizontal, vertical);
});
$.publish(Events.PISKEL_RESET);
$.publish(Events.PISKEL_SAVE_STATE, {
type : pskl.service.HistoryService.SNAPSHOT
});
};
window.copyToAll = function () {
var ref = pskl.app.piskelController.getCurrentFrame();
var layer = pskl.app.piskelController.getCurrentLayer();
layer.getFrames().forEach(function (frame) {
if (frame !== ref) {
frame.setPixels(ref.getPixels());
}
});
$.publish(Events.PISKEL_RESET);
$.publish(Events.PISKEL_SAVE_STATE, {
type : pskl.service.HistoryService.SNAPSHOT
});
};
})();
(function () {})();

View File

@ -14,7 +14,7 @@
var color = {
r : 255,
g : 255,
b : 255
b : 0
};
var match = null;
while (true) {

View File

@ -28,7 +28,7 @@
this.synchronize_(this.lastInput);
};
ns.SizeInput.prototype.enableSync = function () {
ns.SizeInput.prototype.disableSync = function () {
this.syncEnabled = false;
};

View File

@ -2,9 +2,10 @@
(typeof exports != "undefined" ? exports : pskl_exports).scripts = [
// Core libraries
"js/lib/jquery-1.8.0.js","js/lib/jquery-ui-1.10.3.custom.js","js/lib/pubsub.js","js/lib/bootstrap/bootstrap.js",
"js/lib/jquery-1.8.0.js",
"js/lib/jquery-ui-1.10.3.custom.js",
"js/lib/pubsub.js",
"js/lib/bootstrap/bootstrap.js",
// Application wide configuration
"js/Constants.js",
@ -126,7 +127,6 @@
"js/controller/dialogs/ImportImageController.js",
"js/controller/dialogs/BrowseLocalController.js",
// Dialogs controller
"js/controller/dialogs/DialogsController.js",

View File

@ -5,25 +5,25 @@ describe("Color utils", function() {
it("returns a color when provided with array of colors", function() {
// when/then
var unusedColor = pskl.utils.ColorUtils.getUnusedColor(['#ffffff', '#feffff', '#fdffff']);
var unusedColor = pskl.utils.ColorUtils.getUnusedColor(['#ffff00', '#feff00', '#fdff00']);
// verify
expect(unusedColor).toBe('#FCFFFF');
expect(unusedColor).toBe('#FCFF00');
// when/then
unusedColor = pskl.utils.ColorUtils.getUnusedColor(['#fcffff', '#feffff', '#fdffff']);
unusedColor = pskl.utils.ColorUtils.getUnusedColor(['#fcff00', '#feff00', '#fdff00']);
// verify
expect(unusedColor).toBe('#FFFFFF');
expect(unusedColor).toBe('#FFFF00');
});
it("returns a color for an empty array", function() {
// when/then
var unusedColor = pskl.utils.ColorUtils.getUnusedColor([]);
// verify
expect(unusedColor).toBe('#FFFFFF');
expect(unusedColor).toBe('#FFFF00');
// when/then
unusedColor = pskl.utils.ColorUtils.getUnusedColor();
// verify
expect(unusedColor).toBe('#FFFFFF');
expect(unusedColor).toBe('#FFFF00');
});
});