mirror of
https://github.com/piskelapp/piskel.git
synced 2023-08-10 21:12:52 +03:00
moved Frame and FrameSheet to model package
This commit is contained in:
parent
69a03a3416
commit
a567992a1d
@ -73,10 +73,10 @@
|
|||||||
<script src="js/lib/jsColor_1_4_0/jscolor.js"></script>
|
<script src="js/lib/jsColor_1_4_0/jscolor.js"></script>
|
||||||
|
|
||||||
<!-- Application libraries-->
|
<!-- Application libraries-->
|
||||||
<script src="js/rendering/Frame.js"></script>
|
<script src="js/model/Frame.js"></script>
|
||||||
<script src="js/rendering/drawingController.js"></script>
|
<script src="js/model/FrameSheet.js"></script>
|
||||||
|
<script src="js/controller/DrawingController.js"></script>
|
||||||
<script src="js/rendering/FrameRenderer.js"></script>
|
<script src="js/rendering/FrameRenderer.js"></script>
|
||||||
<script src="js/FrameSheetModel.js"></script>
|
|
||||||
<script src="js/LocalStorageService.js"></script>
|
<script src="js/LocalStorageService.js"></script>
|
||||||
<script src="js/Palette.js"></script>
|
<script src="js/Palette.js"></script>
|
||||||
<script src="js/Notification.js"></script>
|
<script src="js/Notification.js"></script>
|
||||||
|
@ -1,105 +0,0 @@
|
|||||||
|
|
||||||
$.namespace("pskl");
|
|
||||||
|
|
||||||
pskl.FrameSheetModel = (function() {
|
|
||||||
|
|
||||||
var inst;
|
|
||||||
var frames = [];
|
|
||||||
var width;
|
|
||||||
var height;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
var requestLocalStorageSave_ = function() {
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
return {
|
|
||||||
validate: function() {
|
|
||||||
return true; // I'm always right dude
|
|
||||||
},
|
|
||||||
|
|
||||||
getUsedColors: function() {
|
|
||||||
var colors = {};
|
|
||||||
for (var frameIndex=0; frameIndex < frames.length; frameIndex++) {
|
|
||||||
var frame = frames[frameIndex];
|
|
||||||
for (var i = 0, width = frame.getWidth(); i < width ; i++) {
|
|
||||||
var line = frame[i];
|
|
||||||
for (var j = 0, height = frame.getHeight() ; j < height ; j++) {
|
|
||||||
var pixel = frame.getPixel(i, j);
|
|
||||||
colors[pixel] = pixel;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return colors;
|
|
||||||
},
|
|
||||||
|
|
||||||
// Could be used to pass around model using long GET param (good enough for simple models) and
|
|
||||||
// do some temporary locastorage
|
|
||||||
serialize: function() {
|
|
||||||
return JSON.stringify(frames);
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Load a framesheet from a string that might have been persisted in db / localstorage
|
|
||||||
* Overrides existing frames.
|
|
||||||
* @param {String} serialized
|
|
||||||
*/
|
|
||||||
deserialize : function (serialized) {
|
|
||||||
try {
|
|
||||||
frames = JSON.parse(serialized);
|
|
||||||
$.publish(Events.FRAMESHEET_RESET);
|
|
||||||
} catch (e) {
|
|
||||||
throw "Could not load serialized framesheet." + e.message
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
addEmptyFrame : function () {
|
|
||||||
this.addFrame(pskl.rendering.Frame.createEmpty(width, height));
|
|
||||||
},
|
|
||||||
|
|
||||||
addFrame: function(frame) {
|
|
||||||
frames.push(frame);
|
|
||||||
},
|
|
||||||
|
|
||||||
getFrameCount: function() {
|
|
||||||
return frames.length;
|
|
||||||
},
|
|
||||||
|
|
||||||
getFrameByIndex: function(index) {
|
|
||||||
if (isNaN(index)) {
|
|
||||||
throw "Bad argument value for getFrameByIndex method: <" + index + ">";
|
|
||||||
} else if (index < 0 || index > frames.length) {
|
|
||||||
throw "Out of bound index for frameSheet object.";
|
|
||||||
}
|
|
||||||
|
|
||||||
return frames[index];
|
|
||||||
},
|
|
||||||
|
|
||||||
removeFrameByIndex: function(index) {
|
|
||||||
if(index < 0 || index > inst.getFrameCount()) {
|
|
||||||
throw "Bad index value for removeFrameByIndex.";
|
|
||||||
}
|
|
||||||
frames.splice(index, 1);
|
|
||||||
},
|
|
||||||
|
|
||||||
duplicateFrameByIndex: function(index) {
|
|
||||||
var frame = inst.getFrameByIndex(index);
|
|
||||||
frames.splice(index + 1, 0, frame.clone());
|
|
||||||
},
|
|
||||||
|
|
||||||
getInstance: function(width_, height_) {
|
|
||||||
if (isNaN(width_) || isNaN(height_)) {
|
|
||||||
throw "Bad FrameSheetModel initialization in getInstance method.";
|
|
||||||
}
|
|
||||||
|
|
||||||
inst = this;
|
|
||||||
|
|
||||||
width = width_;
|
|
||||||
height = height_;
|
|
||||||
|
|
||||||
return inst;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})();
|
|
@ -1,17 +1,17 @@
|
|||||||
(function () {
|
(function () {
|
||||||
var ns = $.namespace("pskl.rendering");
|
var ns = $.namespace("pskl.controller");
|
||||||
ns.DrawingController = function (frame, container, dpi) {
|
ns.DrawingController = function (frame, container, dpi) {
|
||||||
this.dpi = dpi;
|
this.dpi = dpi;
|
||||||
|
|
||||||
// Public
|
// Public
|
||||||
this.frame = frame;
|
this.frame = frame;
|
||||||
this.overlay = ns.Frame.createEmptyFromFrame(frame);
|
this.overlay = pskl.model.Frame.createEmptyFromFrame(frame);
|
||||||
|
|
||||||
// Private
|
// Private
|
||||||
this.container = container;
|
this.container = container;
|
||||||
this.mainCanvas = this.createMainCanvas();
|
this.mainCanvas = this.createMainCanvas();
|
||||||
this.overlayCanvas = this.createOverlayCanvas();
|
this.overlayCanvas = this.createOverlayCanvas();
|
||||||
this.renderer = new ns.FrameRenderer();
|
this.renderer = new pskl.rendering.FrameRenderer();
|
||||||
};
|
};
|
||||||
|
|
||||||
ns.DrawingController.prototype.renderFrame = function () {
|
ns.DrawingController.prototype.renderFrame = function () {
|
||||||
@ -27,7 +27,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
ns.DrawingController.prototype.clearOverlay = function () {
|
ns.DrawingController.prototype.clearOverlay = function () {
|
||||||
this.overlay = ns.Frame.createEmptyFromFrame(this.frame);
|
this.overlay = pskl.model.Frame.createEmptyFromFrame(this.frame);
|
||||||
this.overlayCanvas.getContext("2d").clearRect(0, 0, this.overlayCanvas.width, this.overlayCanvas.height);
|
this.overlayCanvas.getContext("2d").clearRect(0, 0, this.overlayCanvas.width, this.overlayCanvas.height);
|
||||||
};
|
};
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
(function () {
|
(function () {
|
||||||
var ns = $.namespace("pskl.rendering");
|
var ns = $.namespace("pskl.model");
|
||||||
ns.Frame = function (pixels) {
|
ns.Frame = function (pixels) {
|
||||||
this.pixels = pixels;
|
this.pixels = pixels;
|
||||||
};
|
};
|
83
js/model/FrameSheet.js
Normal file
83
js/model/FrameSheet.js
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
(function () {
|
||||||
|
var ns = $.namespace("pskl.model");
|
||||||
|
ns.FrameSheet = function () {
|
||||||
|
this.frames = [];
|
||||||
|
};
|
||||||
|
|
||||||
|
ns.FrameSheet.prototype.validate = function () {
|
||||||
|
throw "FrameSheet.prototype.validate not implemented"
|
||||||
|
};
|
||||||
|
|
||||||
|
ns.FrameSheet.prototype.addEmptyFrame = function () {
|
||||||
|
this.addFrame(ns.Frame.createEmpty(width, height));
|
||||||
|
};
|
||||||
|
|
||||||
|
ns.FrameSheet.prototype.addFrame = function (frame) {
|
||||||
|
this.frames.push(frame);
|
||||||
|
};
|
||||||
|
|
||||||
|
ns.FrameSheet.prototype.getFrameCount = function () {
|
||||||
|
return this.frames.length;
|
||||||
|
};
|
||||||
|
|
||||||
|
ns.FrameSheet.prototype.getUsedColors = function() {
|
||||||
|
var colors = {};
|
||||||
|
for (var frameIndex=0; frameIndex < this.frames.length; frameIndex++) {
|
||||||
|
var frame = this.frames[frameIndex];
|
||||||
|
for (var i = 0, width = frame.getWidth(); i < width ; i++) {
|
||||||
|
var line = frame[i];
|
||||||
|
for (var j = 0, height = frame.getHeight() ; j < height ; j++) {
|
||||||
|
var pixel = frame.getPixel(i, j);
|
||||||
|
colors[pixel] = pixel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return colors;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Could be used to pass around model using long GET param (good enough for simple models) and
|
||||||
|
// do some temporary locastorage
|
||||||
|
ns.FrameSheet.prototype.serialize = function() {
|
||||||
|
throw "FrameSheet.prototype.serialize not implemented"
|
||||||
|
//return JSON.stringify(frames);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load a framesheet from a string that might have been persisted in db / localstorage
|
||||||
|
* Overrides existing frames.
|
||||||
|
* @param {String} serialized
|
||||||
|
*/
|
||||||
|
ns.FrameSheet.prototype.deserialize = function (serialized) {
|
||||||
|
throw "FrameSheet.prototype.deserialize not implemented"
|
||||||
|
// try {
|
||||||
|
// frames = JSON.parse(serialized);
|
||||||
|
// $.publish(Events.FRAMESHEET_RESET);
|
||||||
|
// } catch (e) {
|
||||||
|
// throw "Could not load serialized framesheet." + e.message
|
||||||
|
// }
|
||||||
|
};
|
||||||
|
|
||||||
|
ns.FrameSheet.prototype.getFrameByIndex = function(index) {
|
||||||
|
if (isNaN(index)) {
|
||||||
|
throw "Bad argument value for getFrameByIndex method: <" + index + ">";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (index < 0 || index > this.getFrameCount()) {
|
||||||
|
throw "Out of bound index for frameSheet object.";
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.frames[index];
|
||||||
|
};
|
||||||
|
|
||||||
|
ns.FrameSheet.prototype.removeFrameByIndex = function(index) {
|
||||||
|
if(index < 0 || index > this.getFrameCount()) {
|
||||||
|
throw "Out of bound index for frameSheet object.";
|
||||||
|
}
|
||||||
|
frames.splice(index, 1);
|
||||||
|
};
|
||||||
|
|
||||||
|
ns.FrameSheet.prototype.duplicateFrameByIndex = function(index) {
|
||||||
|
var frame = this.getFrameByIndex(index);
|
||||||
|
this.frames.splice(index + 1, 0, frame.clone());
|
||||||
|
};
|
||||||
|
})();
|
@ -50,9 +50,9 @@ $.namespace("pskl");
|
|||||||
var piskel = {
|
var piskel = {
|
||||||
|
|
||||||
init : function () {
|
init : function () {
|
||||||
var emptyFrame = pskl.rendering.Frame.createEmpty(framePixelWidth, framePixelHeight);
|
var emptyFrame = pskl.model.Frame.createEmpty(framePixelWidth, framePixelHeight);
|
||||||
|
|
||||||
this.drawingController = new pskl.rendering.DrawingController(
|
this.drawingController = new pskl.controller.DrawingController(
|
||||||
emptyFrame,
|
emptyFrame,
|
||||||
$('#drawing-canvas-container')[0],
|
$('#drawing-canvas-container')[0],
|
||||||
drawingCanvasDpi
|
drawingCanvasDpi
|
||||||
@ -60,7 +60,7 @@ $.namespace("pskl");
|
|||||||
|
|
||||||
renderer = new pskl.rendering.FrameRenderer();
|
renderer = new pskl.rendering.FrameRenderer();
|
||||||
|
|
||||||
frameSheet = pskl.FrameSheetModel.getInstance(framePixelWidth, framePixelHeight);
|
frameSheet = new pskl.model.FrameSheet();
|
||||||
frameSheet.addFrame(emptyFrame);
|
frameSheet.addFrame(emptyFrame);
|
||||||
this.setActiveFrame(0);
|
this.setActiveFrame(0);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user