feature : zoom : continued

- simplified Renderer(s) architecture (removed decorator,
  CachedFrameRenderer simply inherits from FrameRenderer now)
- keeping AbstractRenderer to act as interface
- fixed issue with layers : forgot to clone the first frame while merging
  and therefore was modifying the original frame when I just wanted to
  create a tmp frame (FrameUtils.js)
- extracted the mousemove throttling delay used in DrawingController to
  Constants.js and reduced it from 40ms to 10ms
This commit is contained in:
jdescottes
2013-11-01 16:27:23 +01:00
parent 51f86afe6e
commit b7e8310b61
6 changed files with 17 additions and 73 deletions

View File

@ -2,17 +2,25 @@
var ns = $.namespace('pskl.rendering.frame');
/**
* Cached renderer that can uses the same constructor as pskl.rendering.FrameRenderer
* It will build a FrameRenderer on the fly to use as decorated renderer
* FrameRenderer implementation that prevents unnecessary redraws.
* @param {HtmlElement} container HtmlElement to use as parentNode of the Frame
* @param {Object} renderingOptions
* @param {Array} classes array of strings to use for css classes
*/
ns.CachedFrameRenderer = function (container, renderingOptions, classes) {
var frameRenderer = new pskl.rendering.frame.FrameRenderer(container, renderingOptions, classes);
pskl.rendering.CachedRenderer.call(this, frameRenderer);
pskl.rendering.frame.FrameRenderer.call(this, container, renderingOptions, classes);
this.serializedFrame = '';
};
pskl.utils.inherit(pskl.rendering.frame.CachedFrameRenderer, pskl.rendering.CachedRenderer);
pskl.utils.inherit(pskl.rendering.frame.CachedFrameRenderer, pskl.rendering.frame.FrameRenderer);
ns.CachedFrameRenderer.prototype.render = function (frame) {
var offset = this.getOffset();
var size = this.getDisplaySize();
var serializedFrame = [this.getZoom(), offset.x, offset.y, size.width, size.height, frame.serialize()].join('-');
if (this.serializedFrame != serializedFrame) {
this.serializedFrame = serializedFrame;
this.superclass.render.call(this, frame);
}
};
})();