Makefile now creates a combined js with pixastic dependencies and makes the minified version from that

This commit is contained in:
Bala Clark 2011-09-06 09:12:33 +02:00
parent 88dd360a71
commit 36e9240e9b
5 changed files with 1543 additions and 21 deletions

View file

@ -1,3 +1,18 @@
lib/ComicBook.min.js : lib/ComicBook.js
SOURCES = lib/pixastic/pixastic.core.js \
lib/pixastic/actions/brightness.js \
lib/pixastic/actions/desaturate.js \
lib/pixastic/actions/sharpen.js \
lib/ComicBook.js
all: reset lib/ComicBook.combined.js lib/ComicBook.min.js
lib/ComicBook.combined.js: ${SOURCES}
cat > $@ $^
lib/ComicBook.min.js: lib/ComicBook.combined.js
java -jar bin/closure-complier/compiler.jar --compilation_level SIMPLE_OPTIMIZATIONS --js $< --js_output_file $@
reset:
rm lib/ComicBook.min.js
rm lib/ComicBook.combined.js

View file

@ -6,10 +6,6 @@
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script>
<script src="../lib/pixastic/pixastic.core.js"></script>
<script src="../lib/pixastic/actions/brightness.js"></script>
<script src="../lib/pixastic/actions/desaturate.js"></script>
<script src="../lib/pixastic/actions/sharpen.js"></script>
<script src="../lib/ComicBook.min.js"></script>
<link rel="stylesheet" href="../css/reset.css">

1494
lib/ComicBook.combined.js Normal file

File diff suppressed because it is too large Load diff

View file

@ -7,7 +7,6 @@
- fix manga mode
- trigger preload if requesting valid but not loaded images (can happen if network was interupted)
- check for html5 feature support where used: diveintohtml5.org/everything.html or www.modernizr.com
- write bin scripts to minify & join all js
- when applying enhancements reading position gets lost
- loading bar
- full browser test - IE9 / FF3.6+ / Chrome / Safari / Opera

46
lib/ComicBook.min.js vendored
View file

@ -1,20 +1,38 @@
function merge(j,g){var k;typeof g==="undefined"&&(g={});for(k in j)j.hasOwnProperty(k)&&!(k in g)&&(g[k]=j[k]);return g}function ComicBookException(j,g){this.type=j;this.object=g;this.INVALID_PAGE="invalid page";this.INVALID_PAGE_TYPE="invalid page type";this.UNDEFINED_CONTROL="undefined control";this.INVALID_ZOOM_MODE="invalid zoom mode";this.INVALID_NAVIGATION_EVENT="invalid navigation event"}
function ComicBook(j,g,k){function m(){var a=window.innerHeight+1;o===!1&&(o=$(document.createElement("div")).attr("id","cb-width-shiv").css({width:"100%",position:"absolute",top:0,zIndex:"-1000"}),$("body").append(o));o.height(a);return o.innerWidth()}function w(){var a=parseInt(location.hash.substring(1),10)-1||0;a!==d&&h.indexOf(a)>-1&&(d=a,ComicBook.prototype.draw())}function s(){i=document.getElementById(x);t=i.getContext("2d");v===!1&&(ComicBook.prototype.renderControls(),v=!0);i.addEventListener("click",
ComicBook.prototype.navigation,!1);window.addEventListener("keydown",ComicBook.prototype.navigation,!1);window.addEventListener("hashchange",w,!1)}var x=j;this.srcs=g;var b=merge({displayMode:"double",zoomMode:"fitWidth",manga:!1,enhance:{},keyboard:{next:78,previous:80,toolbar:84,toggleLayout:76}},k),e=g.length,p=[],i,t,u=1,h=[],n=1,q=!1,v=!1,r=!1,o=!1,d=parseInt(location.hash.substring(1),10)-1||0;ComicBook.prototype.control={status:$(document.createElement("p")).attr("id","cb-status").addClass("cb-control cb-always-on"),
var Pixastic=function(){function c(a,b,e){a.addEventListener?a.addEventListener(b,e,!1):a.attachEvent&&a.attachEvent("on"+b,e)}function k(a){var b=!1,e=function(){b||(b=!0,a())};document.write('<script defer src="//:" id="__onload_ie_pixastic__"><\/script>');var d=document.getElementById("__onload_ie_pixastic__");d.onreadystatechange=function(){d.readyState=="complete"&&(d.parentNode.removeChild(d),e())};document.addEventListener&&document.addEventListener("DOMContentLoaded",e,!1);c(window,"load",
e)}function g(){for(var a=f("pixastic",null,"img"),b=f("pixastic",null,"canvas"),e=a.concat(b),d=0;d<e.length;d++)(function(){for(var a=e[d],b=[],m=a.className.split(" "),f=0;f<m.length;f++){var c=m[f];c.substring(0,9)=="pixastic-"&&(c=c.substring(9),c!=""&&b.push(c))}if(b.length)if(a.tagName.toLowerCase()=="img")if(m=new Image,m.src=a.src,m.complete)for(m=0;m<b.length;m++)(f=Pixastic.applyAction(a,a,b[m],null))&&(a=f);else m.onload=function(){for(var d=0;d<b.length;d++){var e=Pixastic.applyAction(a,
a,b[d],null);e&&(a=e)}};else setTimeout(function(){for(var d=0;d<b.length;d++){var e=Pixastic.applyAction(a,a,b[d],null);e&&(a=e)}},1)})()}function f(a,b,e){var d=[];b==null&&(b=document);e==null&&(e="*");b=b.getElementsByTagName(e);e=b.length;a=RegExp("(^|\\s)"+a+"(\\s|$)");for(i=0,j=0;i<e;i++)a.test(b[i].className)&&(d[j]=b[i],j++);return d}function p(a,b){if(Pixastic.debug)try{switch(b){case "warn":console.warn("Pixastic:",a);break;case "error":console.error("Pixastic:",a);break;default:console.log("Pixastic:",
a)}}catch(e){}}typeof pixastic_parseonload!="undefined"&&pixastic_parseonload&&k(g);var l=function(){var a=document.createElement("canvas"),b=!1;try{b=!!(typeof a.getContext=="function"&&a.getContext("2d"))}catch(e){}return function(){return b}}(),q=function(){var a=document.createElement("canvas"),b=!1,e;try{if(typeof a.getContext=="function"&&(e=a.getContext("2d")))b=typeof e.getImageData=="function"}catch(d){}return function(){return b}}(),b=function(){var a=!1,b=document.createElement("canvas");
if(l()&&q()){b.width=b.height=1;b=b.getContext("2d");b.fillStyle="rgb(255,0,0)";b.fillRect(0,0,1,1);var e=document.createElement("canvas");e.width=e.height=1;var d=e.getContext("2d");d.fillStyle="rgb(0,0,255)";d.fillRect(0,0,1,1);b.globalAlpha=0.5;b.drawImage(e,0,0);a=b.getImageData(0,0,1,1).data[2]!=255}return function(){return a}}();return{parseOnLoad:!1,debug:!1,applyAction:function(a,b,e,d){var d=d||{},f=a.tagName.toLowerCase()=="canvas";if(f&&Pixastic.Client.isIE())return Pixastic.debug&&p("Tried to process a canvas element but browser is IE."),
!1;var h,c,k=!1;Pixastic.Client.hasCanvas()&&(k=!!d.resultCanvas,h=d.resultCanvas||document.createElement("canvas"),c=h.getContext("2d"));var g=a.offsetWidth,l=a.offsetHeight;if(f)g=a.width,l=a.height;if(g==0||l==0)if(a.parentNode==null){var o=a.style.position,n=a.style.left;a.style.position="absolute";a.style.left="-9999px";document.body.appendChild(a);g=a.offsetWidth;l=a.offsetHeight;document.body.removeChild(a);a.style.position=o;a.style.left=n}else{Pixastic.debug&&p("Image has 0 width and/or height.");
return}if(e.indexOf("(")>-1&&(o=e,e=o.substr(0,o.indexOf("(")),o=o.match(/\((.*?)\)/),o[1])){o=o[1].split(";");for(n=0;n<o.length;n++)if(thisArg=o[n].split("="),thisArg.length==2)if(thisArg[0]=="rect"){var w=thisArg[1].split(",");d[thisArg[0]]={left:parseInt(w[0],10)||0,top:parseInt(w[1],10)||0,width:parseInt(w[2],10)||0,height:parseInt(w[3],10)||0}}else d[thisArg[0]]=thisArg[1]}d.rect?(d.rect.left=Math.round(d.rect.left),d.rect.top=Math.round(d.rect.top),d.rect.width=Math.round(d.rect.width),d.rect.height=
Math.round(d.rect.height)):d.rect={left:0,top:0,width:g,height:l};o=!1;Pixastic.Actions[e]&&typeof Pixastic.Actions[e].process=="function"&&(o=!0);if(!o)return Pixastic.debug&&p('Invalid action "'+e+'". Maybe file not included?'),!1;if(!Pixastic.Actions[e].checkSupport())return Pixastic.debug&&p('Action "'+e+'" not supported by this browser.'),!1;if(Pixastic.Client.hasCanvas()){if(h!==a)h.width=g,h.height=l;if(!k)h.style.width=g+"px",h.style.height=l+"px";c.drawImage(b,0,0,g,l);a.__pixastic_org_image?
(h.__pixastic_org_image=a.__pixastic_org_image,h.__pixastic_org_width=a.__pixastic_org_width,h.__pixastic_org_height=a.__pixastic_org_height):(h.__pixastic_org_image=a,h.__pixastic_org_width=g,h.__pixastic_org_height=l)}else if(Pixastic.Client.isIE()&&typeof a.__pixastic_org_style=="undefined")a.__pixastic_org_style=a.style.cssText;b={image:a,canvas:h,width:g,height:l,useData:!0,options:d};if(!Pixastic.Actions[e].process(b))return!1;if(Pixastic.Client.hasCanvas()){b.useData&&Pixastic.Client.hasCanvasImageData()&&
(h.getContext("2d").putImageData(b.canvasData,d.rect.left,d.rect.top),h.getContext("2d").fillRect(0,0,0,0));if(!d.leaveDOM){h.title=a.title;h.imgsrc=a.imgsrc;if(!f)h.alt=a.alt;if(!f)h.imgsrc=a.src;h.className=a.className;h.style.cssText=a.style.cssText;h.name=a.name;h.tabIndex=a.tabIndex;h.id=a.id;a.parentNode&&a.parentNode.replaceChild&&a.parentNode.replaceChild(h,a)}return d.resultCanvas=h}return a},prepareData:function(a,b){var e=a.canvas.getContext("2d"),d=a.options.rect,e=e.getImageData(d.left,
d.top,d.width,d.height),d=e.data;if(!b)a.canvasData=e;return d},process:function(a,b,e,d){if(a.tagName.toLowerCase()=="img"){var f=new Image;f.src=a.src;if(f.complete){var c=Pixastic.applyAction(a,f,b,e);d&&d(c);return c}else f.onload=function(){var c=Pixastic.applyAction(a,f,b,e);d&&d(c)}}if(a.tagName.toLowerCase()=="canvas")return c=Pixastic.applyAction(a,a,b,e),d&&d(c),c},revert:function(a){if(Pixastic.Client.hasCanvas()){if(a.tagName.toLowerCase()=="canvas"&&a.__pixastic_org_image)return a.width=
a.__pixastic_org_width,a.height=a.__pixastic_org_height,a.getContext("2d").drawImage(a.__pixastic_org_image,0,0),a.parentNode&&a.parentNode.replaceChild&&a.parentNode.replaceChild(a.__pixastic_org_image,a),a}else if(Pixastic.Client.isIE()&&typeof a.__pixastic_org_style!="undefined")a.style.cssText=a.__pixastic_org_style},Client:{hasCanvas:l,hasCanvasImageData:q,hasGlobalAlpha:b,isIE:function(){return!!document.all&&!!window.attachEvent&&!window.opera}},Actions:{}}}();
Pixastic.Actions.brightness={process:function(c){var k=parseInt(c.options.brightness,10)||0,g=parseFloat(c.options.contrast)||0,f=!!(c.options.legacy&&c.options.legacy!="false");if(f)k=Math.min(150,Math.max(-150,k));else var p=1+Math.min(150,Math.max(-150,k))/150;g=Math.max(0,g+1);if(Pixastic.Client.hasCanvasImageData()){var l=Pixastic.prepareData(c),c=c.options.rect,c=c.width*c.height,q=c*4,b,a;g!=1?f?(f=g,k=(k-128)*g+128):(f=p*g,k=-g*128+128):f?f=1:(f=p,k=0);for(var m,e,d;c--;)l[q]=(m=l[q-=4]*f+
k)>255?255:m<0?0:m,l[b]=(e=l[b=q+1]*f+k)>255?255:e<0?0:e,l[a]=(d=l[a=q+2]*f+k)>255?255:d<0?0:d;return!0}},checkSupport:function(){return Pixastic.Client.hasCanvasImageData()}};
Pixastic.Actions.desaturate={process:function(c){var k=!!(c.options.average&&c.options.average!="false");if(Pixastic.Client.hasCanvasImageData()){var g=Pixastic.prepareData(c),c=c.options.rect,c=c.width*c.height,f=c*4,p,l;if(k)for(;c--;)g[f-=4]=g[p=f+1]=g[l=f+2]=(g[f]+g[p]+g[l])/3;else for(;c--;)g[f-=4]=g[p=f+1]=g[l=f+2]=g[f]*0.3+g[p]*0.59+g[l]*0.11;return!0}else if(Pixastic.Client.isIE())return c.image.style.filter+=" gray",!0},checkSupport:function(){return Pixastic.Client.hasCanvasImageData()||
Pixastic.Client.isIE()}};
Pixastic.Actions.sharpen={process:function(c){var k=0;typeof c.options.amount!="undefined"&&(k=parseFloat(c.options.amount)||0);k<0&&(k=0);k>1&&(k=1);if(Pixastic.Client.hasCanvasImageData()){for(var g=Pixastic.prepareData(c),f=Pixastic.prepareData(c,!0),p=15,k=1+3*k,l=[[0,-k,0],[-k,p,-k],[0,-k,0]],q=0,b=0;b<3;b++)for(var a=0;a<3;a++)q+=l[b][a];q=1/q;l=c.options.rect;c=l.width;l=l.height;p*=q;k*=q;q=c*4;b=l;do{var a=(b-1)*q,m=(b==1?0:b-2)*q,e=(b==l?b-1:b)*q,d=c;do{var r=a+(d*4-4),h=m+(d==1?0:d-2)*
4,s=e+(d==c?d-1:d)*4,t=(-f[h]-f[r-4]-f[r+4]-f[s])*k+f[r]*p,u=(-f[h+1]-f[r-3]-f[r+5]-f[s+1])*k+f[r+1]*p,h=(-f[h+2]-f[r-2]-f[r+6]-f[s+2])*k+f[r+2]*p;t<0&&(t=0);u<0&&(u=0);h<0&&(h=0);t>255&&(t=255);u>255&&(u=255);h>255&&(h=255);g[r]=t;g[r+1]=u;g[r+2]=h}while(--d)}while(--b);return!0}},checkSupport:function(){return Pixastic.Client.hasCanvasImageData()}};function merge(c,k){var g;typeof k==="undefined"&&(k={});for(g in c)c.hasOwnProperty(g)&&!(g in k)&&(k[g]=c[g]);return k}
function ComicBookException(c,k){this.type=c;this.object=k;this.INVALID_PAGE="invalid page";this.INVALID_PAGE_TYPE="invalid page type";this.UNDEFINED_CONTROL="undefined control";this.INVALID_ZOOM_MODE="invalid zoom mode";this.INVALID_NAVIGATION_EVENT="invalid navigation event"}
function ComicBook(c,k,g){function f(){var a=window.innerHeight+1;o===!1&&(o=$(document.createElement("div")).attr("id","cb-width-shiv").css({width:"100%",position:"absolute",top:0,zIndex:"-1000"}),$("body").append(o));o.height(a);return o.innerWidth()}function p(){var a=parseInt(location.hash.substring(1),10)-1||0;a!==n&&h.indexOf(a)>-1&&(n=a,ComicBook.prototype.draw())}function l(){e=document.getElementById(q);d=e.getContext("2d");u===!1&&(ComicBook.prototype.renderControls(),u=!0);e.addEventListener("click",
ComicBook.prototype.navigation,!1);window.addEventListener("keydown",ComicBook.prototype.navigation,!1);window.addEventListener("hashchange",p,!1)}var q=c;this.srcs=k;var b=merge({displayMode:"double",zoomMode:"fitWidth",manga:!1,enhance:{},keyboard:{next:78,previous:80,toolbar:84,toggleLayout:76}},g),a=k.length,m=[],e,d,r=1,h=[],s=1,t=!1,u=!1,v=!1,o=!1,n=parseInt(location.hash.substring(1),10)-1||0;ComicBook.prototype.control={status:$(document.createElement("p")).attr("id","cb-status").addClass("cb-control cb-always-on"),
toolbar:$(document.createElement("div")).hide().attr("id","cb-toolbar").addClass("cb-control").append($(document.createElement("button")).attr("title","close the toolbar").addClass("cb-close").click(function(){ComicBook.prototype.toggleToolbar()})).append($(document.createElement("button")).attr("title","switch between dual and single page modes").addClass("cb-layout "+b.displayMode).click(function(){ComicBook.prototype.toggleLayout()})).append($(document.createElement("button")).attr("title","tweak the page colors").addClass("cb-color cb-menu-button").click(function(){ComicBook.prototype.toggleControl("color")})).append($(document.createElement("button")).attr("title",
"zoom out").addClass("cb-zoom-out").click(function(){ComicBook.prototype.zoom(n-0.1)})).append($(document.createElement("button")).attr("title","zoom in").addClass("cb-zoom-in").click(function(){ComicBook.prototype.zoom(n+0.1)})).append($(document.createElement("button")).attr("title","fit to page width").addClass("cb-fit-width").click(function(){b.zoomMode="fitWidth";ComicBook.prototype.drawPage()})).append($(document.createElement("p")).attr("id","cb-comic-info").append("<span id='cb-current-page'></span> / "+
g.length)),color:$(document.createElement("div")).attr("id","cb-color").addClass("cb-control").append("<label for='cb-sharpen'>Brightness</label>").append($("<div id='cb-brightness' class='cb-option'></div>").slider({value:0,step:10,min:-1E3,max:1E3,slide:function(a,b){ComicBook.prototype.enhance.brightness({brightness:b.value})}})).append("<label for='cb-sharpen'>Contrast</label>").append($("<div id='cb-contrast' class='cb-option'></div>").slider({value:0,step:0.1,min:0,max:1,slide:function(a,b){ComicBook.prototype.enhance.brightness({contrast:b.value})}})).append("<label for='cb-sharpen'>Sharpen</label>").append($("<div id='cb-sharpen' class='cb-option'></div>").slider({value:0,
"zoom out").addClass("cb-zoom-out").click(function(){ComicBook.prototype.zoom(s-0.1)})).append($(document.createElement("button")).attr("title","zoom in").addClass("cb-zoom-in").click(function(){ComicBook.prototype.zoom(s+0.1)})).append($(document.createElement("button")).attr("title","fit to page width").addClass("cb-fit-width").click(function(){b.zoomMode="fitWidth";ComicBook.prototype.drawPage()})).append($(document.createElement("p")).attr("id","cb-comic-info").append("<span id='cb-current-page'></span> / "+
k.length)),color:$(document.createElement("div")).attr("id","cb-color").addClass("cb-control").append("<label for='cb-sharpen'>Brightness</label>").append($("<div id='cb-brightness' class='cb-option'></div>").slider({value:0,step:10,min:-1E3,max:1E3,slide:function(a,b){ComicBook.prototype.enhance.brightness({brightness:b.value})}})).append("<label for='cb-sharpen'>Contrast</label>").append($("<div id='cb-contrast' class='cb-option'></div>").slider({value:0,step:0.1,min:0,max:1,slide:function(a,b){ComicBook.prototype.enhance.brightness({contrast:b.value})}})).append("<label for='cb-sharpen'>Sharpen</label>").append($("<div id='cb-sharpen' class='cb-option'></div>").slider({value:0,
step:0.1,min:0,max:1,slide:function(a,b){ComicBook.prototype.enhance.sharpen({amount:b.value})}})).append($(document.createElement("div")).addClass("cb-option").append("<input type='checkbox' id='cb-desaturate' /> <label for='cb-desaturate'>Desaturate</label>").append("<button id='cb-reset'>reset</button>")),navigation:{left:$(document.createElement("div")).addClass("cb-control cb-navigate cb-always-on left").click(function(){ComicBook.prototype.drawPrevPage()}),right:$(document.createElement("div")).addClass("cb-control cb-navigate cb-always-on right").click(function(){ComicBook.prototype.drawNextPage()})},
loadingOverlay:$(document.createElement("div")).attr("id","cb-loading-overlay").addClass("cb-control")};ComicBook.prototype.renderControls=function(){$(i).before(this.getControl("loadingOverlay")).before(this.getControl("status")).after(this.getControl("toolbar")).after(this.getControl("navigation").left).after(this.getControl("navigation").right).after(this.getControl("color").hide());$(".cb-menu-button").click(function(){$(this).toggleClass("active")});$("#cb-desaturate").click(function(){$(this).is(":checked")?
loadingOverlay:$(document.createElement("div")).attr("id","cb-loading-overlay").addClass("cb-control")};ComicBook.prototype.renderControls=function(){$(e).before(this.getControl("loadingOverlay")).before(this.getControl("status")).after(this.getControl("toolbar")).after(this.getControl("navigation").left).after(this.getControl("navigation").right).after(this.getControl("color").hide());$(".cb-menu-button").click(function(){$(this).toggleClass("active")});$("#cb-desaturate").click(function(){$(this).is(":checked")?
ComicBook.prototype.enhance.desaturate():ComicBook.prototype.enhance.resaturate()});$("#cb-reset").click(function(){$("#cb-brightness").slider("value",0);$("#cb-contrast").slider("value",0);$("#cb-saturation").slider("value",0);$("#cb-sharpen").slider("value",0);$("#cb-desaturate").attr("checked",!1);ComicBook.prototype.enhance.reset()})};ComicBook.prototype.getControl=function(a){if(typeof this.control[a]==="undefined")throw new ComicBookException(ComicBookException.UNDEFINED_CONTROL,a);return this.control[a]};
ComicBook.prototype.showControl=function(a){this.getControl(a).show().addClass("open")};ComicBook.prototype.hideControl=function(a){this.getControl(a).removeClass("open").hide()};ComicBook.prototype.toggleControl=function(a){this.getControl(a).toggle().toggleClass("open")};ComicBook.prototype.toggleToolbar=function(){$("#cb-toolbar").is(":visible")?$(".cb-control").not(".cb-always-on").hide():$("#cb-toolbar, .cb-control.open").show()};ComicBook.prototype.toggleLayout=function(){b.displayMode==="double"?
($("#cb-toolbar .cb-layout").removeClass("double"),b.displayMode="single"):($("#cb-toolbar .cb-layout").removeClass("single"),b.displayMode="double");$("#cb-toolbar .cb-layout").addClass(b.displayMode);ComicBook.prototype.drawPage()};ComicBook.prototype.getPage=function(a){if(a<0||a>g.length)throw new ComicBookException(ComicBookException.INVALID_PAGE,a);if(typeof p[a]==="object")return p[a];else r=a,this.showControl("loadingOverlay")};ComicBook.prototype.draw=function(){s();$(".cb-control.cb-navigate").outerHeight(window.innerHeight);
$("#cb-toolbar").outerWidth(m());$("#cb-loading-overlay").outerWidth(m()).height(window.innerHeight);p.length!==e?this.preload():this.drawPage()};ComicBook.prototype.zoom=function(a){b.zoomMode="manual";n=a;typeof this.getPage(d)==="object"&&this.drawPage()};ComicBook.prototype.preload=function(){function a(c){var i=new Image,f;$("#cb-status").text("loading page "+(c+1)+" of "+e);i.src=g[c];i.onload=function(){p[c]=this;h.push(c);c===e-1&&h.length!==e&&(c=-1);h.length<e&&(c++,a(c));f=b.displayMode===
"double"?1:0;if(h[h.length-1]===d+u+f||h[h.length-1]===r)typeof r==="number"&&(d=r-1,r=!1),ComicBook.prototype.drawPage(),ComicBook.prototype.hideControl("loadingOverlay");h.length===e&&ComicBook.prototype.hideControl("status")}}this.showControl("loadingOverlay");e<u&&(u=e);a(d)};ComicBook.prototype.pageLoaded=function(a){return typeof h[a-1]!=="undefined"};ComicBook.prototype.drawPage=function(a){if(typeof a==="number"&&a<g.length&&(d=a-1,!this.pageLoaded(a))){this.showControl("loadingOverlay");
return}var c,h=a=0,f=ComicBook.prototype.getPage(d),e=ComicBook.prototype.getPage(d+1);if(typeof f!=="object")throw new ComicBookException(ComicBookException.INVALID_PAGE_TYPE,typeof f);var l=f.width;i.width=0;i.height=0;if(q=(f.width>f.height||e.width>e.height)&&b.displayMode==="double")b.displayMode="single";b.displayMode==="double"&&(l+=typeof e==="object"?e.width:l);switch(b.zoomMode){case "manual":document.body.style.overflowX="auto";c=b.displayMode==="double"?n*2:n;break;case "fitWidth":document.body.style.overflowX=
"hidden";n=c=m()>l?(m()-l)/m()+1:m()/l;break;default:throw new ComicBookException(ComicBookException.INVALID_ZOOM_MODE,b.zoomMode);}var l=f.width*c,j=f.height*c;c=b.zoomMode==="manual"?f.width*n:l;var k=b.zoomMode==="manual"?f.height*n:j,j=k;i.width=l<m()?m():l;i.height=j<window.innerHeight?window.innerHeight:j;l<m()&&b.zoomMode==="manual"&&(a=(m()-c)/2,b.displayMode==="double"&&(a-=c/2));j<window.innerHeight&&b.zoomMode==="manual"&&(h=(window.innerHeight-k)/2);b.manga&&b.displayMode==="double"&&
(l=f,f=e,e=l);t.drawImage(f,a,h,c,k);b.displayMode==="double"&&typeof e==="object"&&t.drawImage(e,c+a,h,c,k);$.each(b.enhance,function(a,b){ComicBook.prototype.enhance[a](b)});a=b.displayMode==="double"?d+1+"-"+(d+2):d+1;$("#cb-current-page").text(a);if(q)b.displayMode="double";typeof b.afterDrawPage==="function"&&b.afterDrawPage(d+1);if((parseInt(location.hash.substring(1),10)-1||0)!==d)location.hash=d+1;window.scroll(0,0)};ComicBook.prototype.drawNextPage=function(){if(!this.getPage(d+1))return!1;
d+1<p.length&&(d+=b.displayMode==="single"||q?1:2,this.drawPage())};ComicBook.prototype.drawPrevPage=function(){var a=this.getPage(d-1);if(!a)return!1;q=a.width>a.height;d>0&&(d-=b.displayMode==="single"||q?1:2,this.drawPage())};ComicBook.prototype.enhance={reset:function(a){a?delete b.enhance[a]:b.enhance={};ComicBook.prototype.drawPage()},brightness:function(a,c){c!==!1&&this.reset("brightness");var d=merge({brightness:0,contrast:0},a);b.enhance.brightness=d;Pixastic.process(i,"brightness",{brightness:d.brightness,
contrast:d.contrast,legacy:!0});s()},desaturate:function(){b.enhance.desaturate={};Pixastic.process(i,"desaturate",{average:!1});s()},resaturate:function(){delete b.enhance.desaturate;ComicBook.prototype.drawPage()},sharpen:function(a){this.desharpen();a=merge({amount:0},a);b.enhance.sharpen=a;Pixastic.process(i,"sharpen",{amount:a.amount});s()},desharpen:function(){delete b.enhance.sharpen;ComicBook.prototype.drawPage()}};ComicBook.prototype.navigation=function(a){if($("#cb-loading-overlay").is(":visible"))return!1;
($("#cb-toolbar .cb-layout").removeClass("double"),b.displayMode="single"):($("#cb-toolbar .cb-layout").removeClass("single"),b.displayMode="double");$("#cb-toolbar .cb-layout").addClass(b.displayMode);ComicBook.prototype.drawPage()};ComicBook.prototype.getPage=function(a){if(a<0||a>k.length)throw new ComicBookException(ComicBookException.INVALID_PAGE,a);if(typeof m[a]==="object")return m[a];else v=a,this.showControl("loadingOverlay")};ComicBook.prototype.draw=function(){l();$(".cb-control.cb-navigate").outerHeight(window.innerHeight);
$("#cb-toolbar").outerWidth(f());$("#cb-loading-overlay").outerWidth(f()).height(window.innerHeight);m.length!==a?this.preload():this.drawPage()};ComicBook.prototype.zoom=function(a){b.zoomMode="manual";s=a;typeof this.getPage(n)==="object"&&this.drawPage()};ComicBook.prototype.preload=function(){function d(e){var f=new Image,c;$("#cb-status").text("loading page "+(e+1)+" of "+a);f.src=k[e];f.onload=function(){m[e]=this;h.push(e);e===a-1&&h.length!==a&&(e=-1);h.length<a&&(e++,d(e));c=b.displayMode===
"double"?1:0;if(h[h.length-1]===n+r+c||h[h.length-1]===v)typeof v==="number"&&(n=v-1,v=!1),ComicBook.prototype.drawPage(),ComicBook.prototype.hideControl("loadingOverlay");h.length===a&&ComicBook.prototype.hideControl("status")}}this.showControl("loadingOverlay");a<r&&(r=a);d(n)};ComicBook.prototype.pageLoaded=function(a){return typeof h[a-1]!=="undefined"};ComicBook.prototype.drawPage=function(a){if(typeof a==="number"&&a<k.length&&(n=a-1,!this.pageLoaded(a))){this.showControl("loadingOverlay");
return}var c,h=a=0,g=ComicBook.prototype.getPage(n),l=ComicBook.prototype.getPage(n+1);if(typeof g!=="object")throw new ComicBookException(ComicBookException.INVALID_PAGE_TYPE,typeof g);var m=g.width;e.width=0;e.height=0;if(t=(g.width>g.height||l.width>l.height)&&b.displayMode==="double")b.displayMode="single";b.displayMode==="double"&&(m+=typeof l==="object"?l.width:m);switch(b.zoomMode){case "manual":document.body.style.overflowX="auto";c=b.displayMode==="double"?s*2:s;break;case "fitWidth":document.body.style.overflowX=
"hidden";s=c=f()>m?(f()-m)/f()+1:f()/m;break;default:throw new ComicBookException(ComicBookException.INVALID_ZOOM_MODE,b.zoomMode);}var m=g.width*c,o=g.height*c;c=b.zoomMode==="manual"?g.width*s:m;var p=b.zoomMode==="manual"?g.height*s:o,o=p;e.width=m<f()?f():m;e.height=o<window.innerHeight?window.innerHeight:o;m<f()&&b.zoomMode==="manual"&&(a=(f()-c)/2,b.displayMode==="double"&&(a-=c/2));o<window.innerHeight&&b.zoomMode==="manual"&&(h=(window.innerHeight-p)/2);b.manga&&b.displayMode==="double"&&
(m=g,g=l,l=m);d.drawImage(g,a,h,c,p);b.displayMode==="double"&&typeof l==="object"&&d.drawImage(l,c+a,h,c,p);$.each(b.enhance,function(a,b){ComicBook.prototype.enhance[a](b)});a=b.displayMode==="double"?n+1+"-"+(n+2):n+1;$("#cb-current-page").text(a);if(t)b.displayMode="double";typeof b.afterDrawPage==="function"&&b.afterDrawPage(n+1);if((parseInt(location.hash.substring(1),10)-1||0)!==n)location.hash=n+1;window.scroll(0,0)};ComicBook.prototype.drawNextPage=function(){if(!this.getPage(n+1))return!1;
n+1<m.length&&(n+=b.displayMode==="single"||t?1:2,this.drawPage())};ComicBook.prototype.drawPrevPage=function(){var a=this.getPage(n-1);if(!a)return!1;t=a.width>a.height;n>0&&(n-=b.displayMode==="single"||t?1:2,this.drawPage())};ComicBook.prototype.enhance={reset:function(a){a?delete b.enhance[a]:b.enhance={};ComicBook.prototype.drawPage()},brightness:function(a,d){d!==!1&&this.reset("brightness");var c=merge({brightness:0,contrast:0},a);b.enhance.brightness=c;Pixastic.process(e,"brightness",{brightness:c.brightness,
contrast:c.contrast,legacy:!0});l()},desaturate:function(){b.enhance.desaturate={};Pixastic.process(e,"desaturate",{average:!1});l()},resaturate:function(){delete b.enhance.desaturate;ComicBook.prototype.drawPage()},sharpen:function(a){this.desharpen();a=merge({amount:0},a);b.enhance.sharpen=a;Pixastic.process(e,"sharpen",{amount:a.amount});l()},desharpen:function(){delete b.enhance.sharpen;ComicBook.prototype.drawPage()}};ComicBook.prototype.navigation=function(a){if($("#cb-loading-overlay").is(":visible"))return!1;
var c=!1;switch(a.type){case "click":ComicBook.prototype.toggleToolbar();break;case "keydown":a.keyCode===b.keyboard.previous&&(c="left");a.keyCode===b.keyboard.next&&(c="right");a.keyCode===b.keyboard.toolbar&&ComicBook.prototype.toggleToolbar();a.keyCode===b.keyboard.toggleLayout&&ComicBook.prototype.toggleLayout();break;default:throw new ComicBookException(ComicBookException.INVALID_NAVIGATION_EVENT,a.type);}if(c)return a.stopPropagation(),b.manga?(c==="left"&&ComicBook.prototype.drawNextPage(),
c==="right"&&ComicBook.prototype.drawPrevPage()):(c==="left"&&ComicBook.prototype.drawPrevPage(),c==="right"&&ComicBook.prototype.drawNextPage()),!1}};