added support for double page spreads
This commit is contained in:
parent
115c154c87
commit
3aa2f5da84
1 changed files with 15 additions and 4 deletions
|
@ -62,6 +62,7 @@ function ComicBook(id, srcs, opts) {
|
|||
var buffer = 1; // image preload buffer level
|
||||
var loaded = []; // the images that have been loaded so far
|
||||
var scale = 1; // page zoom scale, 1 = 100%
|
||||
var is_double_page_spread = false;
|
||||
|
||||
// the current page, can pass a default as a url hash
|
||||
var pointer = (parseInt(location.hash.substring(1),10) - 1) || 0;
|
||||
|
@ -219,6 +220,10 @@ function ComicBook(id, srcs, opts) {
|
|||
canvas.width = 0;
|
||||
canvas.height = 0;
|
||||
|
||||
// show double page spreads on a single page
|
||||
is_double_page_spread = ((page.width > page.height || page2.width > page2.height) && options.displayMode === "double");
|
||||
if (is_double_page_spread) { options.displayMode = "single"; }
|
||||
|
||||
if (options.displayMode === "double") {
|
||||
|
||||
// for double page spreads, factor in the width of both pages
|
||||
|
@ -290,6 +295,9 @@ function ComicBook(id, srcs, opts) {
|
|||
$.each(options.enhance, function(action, options) {
|
||||
ComicBook.prototype.enhance[action](options);
|
||||
});
|
||||
|
||||
// revert page mode back to double if it was auto switched for a double page spread
|
||||
if (is_double_page_spread) { options.displayMode = "double"; }
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -299,7 +307,7 @@ function ComicBook(id, srcs, opts) {
|
|||
*/
|
||||
ComicBook.prototype.drawNextPage = function () {
|
||||
if (pointer + 1 < pages.length) {
|
||||
pointer += (options.displayMode === "single") ? 1 : 2;
|
||||
pointer += (options.displayMode === "single" || is_double_page_spread) ? 1 : 2;
|
||||
this.drawPage();
|
||||
}
|
||||
};
|
||||
|
@ -310,8 +318,11 @@ function ComicBook(id, srcs, opts) {
|
|||
* @see #drawPage
|
||||
*/
|
||||
ComicBook.prototype.drawPrevPage = function () {
|
||||
|
||||
is_double_page_spread = (pages[pointer-1].width > pages[pointer-1].height); // need to run double page check again here as we are going backwards
|
||||
|
||||
if (pointer > 0) {
|
||||
pointer -= (options.displayMode === "single") ? 1 : 2;
|
||||
pointer -= (options.displayMode === "single" || is_double_page_spread) ? 1 : 2;
|
||||
this.drawPage();
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue