var $this = this;
+
if (this.texts[pageNr] !== undefined) {
- $("#page_" + pageNr + ' .texts').append(this.texts[pageNr]);
+ var textContent = this.fluidbook.support.chromeBased ? '<canvas data-page="' + pageNr + '" class="p"></canvas><canvas data-page="' + pageNr + '" class="z"></canvas>' : this.texts[pageNr];
+ $("#page_" + pageNr + ' .texts').html(textContent);
+ $this.renderTextsCanvas();
callback();
} else {
this._loadTexts(pageNr, function () {
- $("#page_" + pageNr + ' .texts').append($this.texts[pageNr]);
+ var textContent = this.fluidbook.support.chromeBased ? '<canvas data-page="' + pageNr + '" class="p"></canvas><canvas data-page="' + pageNr + '" class="z"></canvas>' : this.texts[pageNr];
+ $("#page_" + pageNr + ' .texts').html(textContent);
+ $this.renderTextsCanvas();
callback();
});
}
},
+
+ renderTextsCanvas: function () {
+ var $this = this;
+
+ var z = this.fluidbook.resize.bookScale * 1.5;
+ var mz = this.fluidbook.resize.bookScale * this.fluidbook.zoom.max;
+
+ var w = this.fluidbook.settings.width * z;
+ var h = this.fluidbook.settings.height * z;
+ var wz = this.fluidbook.settings.width * mz;
+ var hz = this.fluidbook.settings.height * mz;
+
+ $('canvas[data-page]').each(function () {
+ if ($this.fluidbook.zoom.zoom === 1 && $(this).hasClass('z')) {
+ return;
+ }
+ var canvas = $(this).get(0);
+ var page = $(this).data('page');
+
+ if ($(this).data('bookScale') === z) {
+ console.log('no need to render canvas on page ' + page + '')
+ return;
+ }
+ console.log('render canvas on page ' + page);
+
+ var cw = $(this).hasClass('z') ? wz : w;
+ var ch = $(this).hasClass('z') ? hz : h;
+
+ canvas.width = cw;
+ canvas.height = ch;
+
+ var ctx = canvas.getContext("2d");
+ ctx.clearRect(0, 0, cw, ch);
+
+ var img = $this.texts[page].get(0);
+ // if (img.width === 0) {
+ // $this.deletePage(page);
+ // $this._preloadPage(page, callback);
+ // return;
+ // }
+ ctx.drawImage(img, 0, 0, cw, ch);
+ $(this).data('bookScale', z);
+ });
+ },
+
_loadTexts: function (pageNr, callback) {
if (pageNr <= 0 || pageNr > this.fluidbook.settings.pages) {
callback();