added destroy method
This commit is contained in:
parent
71aceb4ef0
commit
d53dc0fc9b
3 changed files with 45 additions and 30 deletions
|
@ -20,6 +20,7 @@
|
|||
<canvas id="comic"></canvas>
|
||||
|
||||
<script>
|
||||
|
||||
var book = new ComicBook('comic', [
|
||||
'goldenboy/goldenboy_00.jpg',
|
||||
'goldenboy/goldenboy_01.jpg',
|
||||
|
@ -48,6 +49,7 @@
|
|||
'goldenboy/goldenboy_24.jpg',
|
||||
'goldenboy/goldenboy_25.jpg'
|
||||
]);
|
||||
|
||||
book.draw();
|
||||
|
||||
$(window).resize(function(event) {
|
||||
|
|
|
@ -894,4 +894,16 @@ function ComicBook(id, srcs, opts) {
|
|||
}
|
||||
};
|
||||
|
||||
ComicBook.prototype.destroy = function () {
|
||||
|
||||
$("#cb-loading-overlay, #cb-status, #cb-color, .cb-control, .cb-toolbar, #cb-width-shiv").remove();
|
||||
canvas.width = 0;
|
||||
canvas.height = 0;
|
||||
window.removeEventListener("keydown", ComicBook.prototype.navigation, false);
|
||||
window.removeEventListener("hashchange", checkHash, false);
|
||||
setHash('');
|
||||
|
||||
$(this).trigger("destroy");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
61
lib/ComicBook.min.js
vendored
61
lib/ComicBook.min.js
vendored
|
@ -1,39 +1,40 @@
|
|||
var Pixastic=function(){function e(a,g,m){a.addEventListener?a.addEventListener(g,m,!1):a.attachEvent&&a.attachEvent("on"+g,m)}function b(a){var g=!1,m=function(){g||(g=!0,a())};document.write('<script defer src="//:" id="__onload_ie_pixastic__"><\/script>');var c=document.getElementById("__onload_ie_pixastic__");c.onreadystatechange=function(){c.readyState=="complete"&&(c.parentNode.removeChild(c),m())};document.addEventListener&&document.addEventListener("DOMContentLoaded",m,!1);e(window,"load",
|
||||
m)}function h(){for(var a=d("pixastic",null,"img"),g=d("pixastic",null,"canvas"),m=a.concat(g),c=0;c<m.length;c++)(function(){for(var a=m[c],f=[],g=a.className.split(" "),b=0;b<g.length;b++){var d=g[b];d.substring(0,9)=="pixastic-"&&(d=d.substring(9),d!=""&&f.push(d))}if(f.length)if(a.tagName.toLowerCase()=="img")if(g=new Image,g.src=a.src,g.complete)for(g=0;g<f.length;g++)(b=Pixastic.applyAction(a,a,f[g],null))&&(a=b);else g.onload=function(){for(var c=0;c<f.length;c++){var g=Pixastic.applyAction(a,
|
||||
a,f[c],null);g&&(a=g)}};else setTimeout(function(){for(var c=0;c<f.length;c++){var g=Pixastic.applyAction(a,a,f[c],null);g&&(a=g)}},1)})()}function d(a,g,b){var c=[];g==null&&(g=document);b==null&&(b="*");g=g.getElementsByTagName(b);b=g.length;a=RegExp("(^|\\s)"+a+"(\\s|$)");for(i=0,j=0;i<b;i++)a.test(g[i].className)&&(c[j]=g[i],j++);return c}function o(a,g){if(Pixastic.debug)try{switch(g){case "warn":console.warn("Pixastic:",a);break;case "error":console.error("Pixastic:",a);break;default:console.log("Pixastic:",
|
||||
a)}}catch(b){}}typeof pixastic_parseonload!="undefined"&&pixastic_parseonload&&b(h);var q=function(){var a=document.createElement("canvas"),g=!1;try{g=!!(typeof a.getContext=="function"&&a.getContext("2d"))}catch(b){}return function(){return g}}(),k=function(){var a=document.createElement("canvas"),g=!1,b;try{if(typeof a.getContext=="function"&&(b=a.getContext("2d")))g=typeof b.getImageData=="function"}catch(c){}return function(){return g}}(),p=function(){var a=!1,g=document.createElement("canvas");
|
||||
if(q()&&k()){g.width=g.height=1;g=g.getContext("2d");g.fillStyle="rgb(255,0,0)";g.fillRect(0,0,1,1);var b=document.createElement("canvas");b.width=b.height=1;var c=b.getContext("2d");c.fillStyle="rgb(0,0,255)";c.fillRect(0,0,1,1);g.globalAlpha=0.5;g.drawImage(b,0,0);a=g.getImageData(0,0,1,1).data[2]!=255}return function(){return a}}();return{parseOnLoad:!1,debug:!1,applyAction:function(a,b,d,c){var c=c||{},e=a.tagName.toLowerCase()=="canvas";if(e&&Pixastic.Client.isIE())return Pixastic.debug&&o("Tried to process a canvas element but browser is IE."),
|
||||
!1;var f,h,q=!1;Pixastic.Client.hasCanvas()&&(q=!!c.resultCanvas,f=c.resultCanvas||document.createElement("canvas"),h=f.getContext("2d"));var k=a.offsetWidth,p=a.offsetHeight;if(e)k=a.width,p=a.height;if(k==0||p==0)if(a.parentNode==null){var n=a.style.position,l=a.style.left;a.style.position="absolute";a.style.left="-9999px";document.body.appendChild(a);k=a.offsetWidth;p=a.offsetHeight;document.body.removeChild(a);a.style.position=n;a.style.left=l}else{Pixastic.debug&&o("Image has 0 width and/or height.");
|
||||
return}if(d.indexOf("(")>-1&&(n=d,d=n.substr(0,n.indexOf("(")),n=n.match(/\((.*?)\)/),n[1])){n=n[1].split(";");for(l=0;l<n.length;l++)if(thisArg=n[l].split("="),thisArg.length==2)if(thisArg[0]=="rect"){var w=thisArg[1].split(",");c[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 c[thisArg[0]]=thisArg[1]}c.rect?(c.rect.left=Math.round(c.rect.left),c.rect.top=Math.round(c.rect.top),c.rect.width=Math.round(c.rect.width),c.rect.height=
|
||||
Math.round(c.rect.height)):c.rect={left:0,top:0,width:k,height:p};n=!1;Pixastic.Actions[d]&&typeof Pixastic.Actions[d].process=="function"&&(n=!0);if(!n)return Pixastic.debug&&o('Invalid action "'+d+'". Maybe file not included?'),!1;if(!Pixastic.Actions[d].checkSupport())return Pixastic.debug&&o('Action "'+d+'" not supported by this browser.'),!1;if(Pixastic.Client.hasCanvas()){if(f!==a)f.width=k,f.height=p;if(!q)f.style.width=k+"px",f.style.height=p+"px";h.drawImage(b,0,0,k,p);a.__pixastic_org_image?
|
||||
(f.__pixastic_org_image=a.__pixastic_org_image,f.__pixastic_org_width=a.__pixastic_org_width,f.__pixastic_org_height=a.__pixastic_org_height):(f.__pixastic_org_image=a,f.__pixastic_org_width=k,f.__pixastic_org_height=p)}else if(Pixastic.Client.isIE()&&typeof a.__pixastic_org_style=="undefined")a.__pixastic_org_style=a.style.cssText;b={image:a,canvas:f,width:k,height:p,useData:!0,options:c};if(!Pixastic.Actions[d].process(b))return!1;if(Pixastic.Client.hasCanvas()){b.useData&&Pixastic.Client.hasCanvasImageData()&&
|
||||
(f.getContext("2d").putImageData(b.canvasData,c.rect.left,c.rect.top),f.getContext("2d").fillRect(0,0,0,0));if(!c.leaveDOM){f.title=a.title;f.imgsrc=a.imgsrc;if(!e)f.alt=a.alt;if(!e)f.imgsrc=a.src;f.className=a.className;f.style.cssText=a.style.cssText;f.name=a.name;f.tabIndex=a.tabIndex;f.id=a.id;a.parentNode&&a.parentNode.replaceChild&&a.parentNode.replaceChild(f,a)}return c.resultCanvas=f}return a},prepareData:function(a,b){var d=a.canvas.getContext("2d"),c=a.options.rect,d=d.getImageData(c.left,
|
||||
c.top,c.width,c.height),c=d.data;if(!b)a.canvasData=d;return c},process:function(a,b,d,c){if(a.tagName.toLowerCase()=="img"){var e=new Image;e.src=a.src;if(e.complete){var f=Pixastic.applyAction(a,e,b,d);c&&c(f);return f}else e.onload=function(){var f=Pixastic.applyAction(a,e,b,d);c&&c(f)}}if(a.tagName.toLowerCase()=="canvas")return f=Pixastic.applyAction(a,a,b,d),c&&c(f),f},revert:function(a){if(Pixastic.Client.hasCanvas()){if(a.tagName.toLowerCase()=="canvas"&&a.__pixastic_org_image)return a.width=
|
||||
var Pixastic=function(){function e(a,g,m){a.addEventListener?a.addEventListener(g,m,!1):a.attachEvent&&a.attachEvent("on"+g,m)}function c(a){var g=!1,m=function(){g||(g=!0,a())};document.write('<script defer src="//:" id="__onload_ie_pixastic__"><\/script>');var b=document.getElementById("__onload_ie_pixastic__");b.onreadystatechange=function(){b.readyState=="complete"&&(b.parentNode.removeChild(b),m())};document.addEventListener&&document.addEventListener("DOMContentLoaded",m,!1);e(window,"load",
|
||||
m)}function h(){for(var a=d("pixastic",null,"img"),g=d("pixastic",null,"canvas"),m=a.concat(g),b=0;b<m.length;b++)(function(){for(var a=m[b],f=[],g=a.className.split(" "),c=0;c<g.length;c++){var d=g[c];d.substring(0,9)=="pixastic-"&&(d=d.substring(9),d!=""&&f.push(d))}if(f.length)if(a.tagName.toLowerCase()=="img")if(g=new Image,g.src=a.src,g.complete)for(g=0;g<f.length;g++)(c=Pixastic.applyAction(a,a,f[g],null))&&(a=c);else g.onload=function(){for(var b=0;b<f.length;b++){var g=Pixastic.applyAction(a,
|
||||
a,f[b],null);g&&(a=g)}};else setTimeout(function(){for(var b=0;b<f.length;b++){var g=Pixastic.applyAction(a,a,f[b],null);g&&(a=g)}},1)})()}function d(a,g,c){var b=[];g==null&&(g=document);c==null&&(c="*");g=g.getElementsByTagName(c);c=g.length;a=RegExp("(^|\\s)"+a+"(\\s|$)");for(i=0,j=0;i<c;i++)a.test(g[i].className)&&(b[j]=g[i],j++);return b}function n(a,g){if(Pixastic.debug)try{switch(g){case "warn":console.warn("Pixastic:",a);break;case "error":console.error("Pixastic:",a);break;default:console.log("Pixastic:",
|
||||
a)}}catch(c){}}typeof pixastic_parseonload!="undefined"&&pixastic_parseonload&&c(h);var q=function(){var a=document.createElement("canvas"),g=!1;try{g=!!(typeof a.getContext=="function"&&a.getContext("2d"))}catch(c){}return function(){return g}}(),k=function(){var a=document.createElement("canvas"),g=!1,c;try{if(typeof a.getContext=="function"&&(c=a.getContext("2d")))g=typeof c.getImageData=="function"}catch(b){}return function(){return g}}(),p=function(){var a=!1,g=document.createElement("canvas");
|
||||
if(q()&&k()){g.width=g.height=1;g=g.getContext("2d");g.fillStyle="rgb(255,0,0)";g.fillRect(0,0,1,1);var c=document.createElement("canvas");c.width=c.height=1;var b=c.getContext("2d");b.fillStyle="rgb(0,0,255)";b.fillRect(0,0,1,1);g.globalAlpha=0.5;g.drawImage(c,0,0);a=g.getImageData(0,0,1,1).data[2]!=255}return function(){return a}}();return{parseOnLoad:!1,debug:!1,applyAction:function(a,c,d,b){var b=b||{},e=a.tagName.toLowerCase()=="canvas";if(e&&Pixastic.Client.isIE())return Pixastic.debug&&n("Tried to process a canvas element but browser is IE."),
|
||||
!1;var f,h,q=!1;Pixastic.Client.hasCanvas()&&(q=!!b.resultCanvas,f=b.resultCanvas||document.createElement("canvas"),h=f.getContext("2d"));var k=a.offsetWidth,p=a.offsetHeight;if(e)k=a.width,p=a.height;if(k==0||p==0)if(a.parentNode==null){var o=a.style.position,l=a.style.left;a.style.position="absolute";a.style.left="-9999px";document.body.appendChild(a);k=a.offsetWidth;p=a.offsetHeight;document.body.removeChild(a);a.style.position=o;a.style.left=l}else{Pixastic.debug&&n("Image has 0 width and/or height.");
|
||||
return}if(d.indexOf("(")>-1&&(o=d,d=o.substr(0,o.indexOf("(")),o=o.match(/\((.*?)\)/),o[1])){o=o[1].split(";");for(l=0;l<o.length;l++)if(thisArg=o[l].split("="),thisArg.length==2)if(thisArg[0]=="rect"){var w=thisArg[1].split(",");b[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 b[thisArg[0]]=thisArg[1]}b.rect?(b.rect.left=Math.round(b.rect.left),b.rect.top=Math.round(b.rect.top),b.rect.width=Math.round(b.rect.width),b.rect.height=
|
||||
Math.round(b.rect.height)):b.rect={left:0,top:0,width:k,height:p};o=!1;Pixastic.Actions[d]&&typeof Pixastic.Actions[d].process=="function"&&(o=!0);if(!o)return Pixastic.debug&&n('Invalid action "'+d+'". Maybe file not included?'),!1;if(!Pixastic.Actions[d].checkSupport())return Pixastic.debug&&n('Action "'+d+'" not supported by this browser.'),!1;if(Pixastic.Client.hasCanvas()){if(f!==a)f.width=k,f.height=p;if(!q)f.style.width=k+"px",f.style.height=p+"px";h.drawImage(c,0,0,k,p);a.__pixastic_org_image?
|
||||
(f.__pixastic_org_image=a.__pixastic_org_image,f.__pixastic_org_width=a.__pixastic_org_width,f.__pixastic_org_height=a.__pixastic_org_height):(f.__pixastic_org_image=a,f.__pixastic_org_width=k,f.__pixastic_org_height=p)}else if(Pixastic.Client.isIE()&&typeof a.__pixastic_org_style=="undefined")a.__pixastic_org_style=a.style.cssText;c={image:a,canvas:f,width:k,height:p,useData:!0,options:b};if(!Pixastic.Actions[d].process(c))return!1;if(Pixastic.Client.hasCanvas()){c.useData&&Pixastic.Client.hasCanvasImageData()&&
|
||||
(f.getContext("2d").putImageData(c.canvasData,b.rect.left,b.rect.top),f.getContext("2d").fillRect(0,0,0,0));if(!b.leaveDOM){f.title=a.title;f.imgsrc=a.imgsrc;if(!e)f.alt=a.alt;if(!e)f.imgsrc=a.src;f.className=a.className;f.style.cssText=a.style.cssText;f.name=a.name;f.tabIndex=a.tabIndex;f.id=a.id;a.parentNode&&a.parentNode.replaceChild&&a.parentNode.replaceChild(f,a)}return b.resultCanvas=f}return a},prepareData:function(a,c){var d=a.canvas.getContext("2d"),b=a.options.rect,d=d.getImageData(b.left,
|
||||
b.top,b.width,b.height),b=d.data;if(!c)a.canvasData=d;return b},process:function(a,c,d,b){if(a.tagName.toLowerCase()=="img"){var e=new Image;e.src=a.src;if(e.complete){var f=Pixastic.applyAction(a,e,c,d);b&&b(f);return f}else e.onload=function(){var f=Pixastic.applyAction(a,e,c,d);b&&b(f)}}if(a.tagName.toLowerCase()=="canvas")return f=Pixastic.applyAction(a,a,c,d),b&&b(f),f},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:q,hasCanvasImageData:k,hasGlobalAlpha:p,isIE:function(){return!!document.all&&!!window.attachEvent&&!window.opera}},Actions:{}}}();
|
||||
Pixastic.Actions.brightness={process:function(e){var b=parseInt(e.options.brightness,10)||0,h=parseFloat(e.options.contrast)||0,d=!!(e.options.legacy&&e.options.legacy!="false");if(d)b=Math.min(150,Math.max(-150,b));else var o=1+Math.min(150,Math.max(-150,b))/150;h=Math.max(0,h+1);if(Pixastic.Client.hasCanvasImageData()){var q=Pixastic.prepareData(e),e=e.options.rect,e=e.width*e.height,k=e*4,p,a;h!=1?d?(d=h,b=(b-128)*h+128):(d=o*h,b=-h*128+128):d?d=1:(d=o,b=0);for(var g,m,c;e--;)q[k]=(g=q[k-=4]*d+
|
||||
b)>255?255:g<0?0:g,q[p]=(m=q[p=k+1]*d+b)>255?255:m<0?0:m,q[a]=(c=q[a=k+2]*d+b)>255?255:c<0?0:c;return!0}},checkSupport:function(){return Pixastic.Client.hasCanvasImageData()}};
|
||||
Pixastic.Actions.desaturate={process:function(e){var b=!!(e.options.average&&e.options.average!="false");if(Pixastic.Client.hasCanvasImageData()){var h=Pixastic.prepareData(e),e=e.options.rect,e=e.width*e.height,d=e*4,o,q;if(b)for(;e--;)h[d-=4]=h[o=d+1]=h[q=d+2]=(h[d]+h[o]+h[q])/3;else for(;e--;)h[d-=4]=h[o=d+1]=h[q=d+2]=h[d]*0.3+h[o]*0.59+h[q]*0.11;return!0}else if(Pixastic.Client.isIE())return e.image.style.filter+=" gray",!0},checkSupport:function(){return Pixastic.Client.hasCanvasImageData()||
|
||||
Pixastic.Actions.brightness={process:function(e){var c=parseInt(e.options.brightness,10)||0,h=parseFloat(e.options.contrast)||0,d=!!(e.options.legacy&&e.options.legacy!="false");if(d)c=Math.min(150,Math.max(-150,c));else var n=1+Math.min(150,Math.max(-150,c))/150;h=Math.max(0,h+1);if(Pixastic.Client.hasCanvasImageData()){var q=Pixastic.prepareData(e),e=e.options.rect,e=e.width*e.height,k=e*4,p,a;h!=1?d?(d=h,c=(c-128)*h+128):(d=n*h,c=-h*128+128):d?d=1:(d=n,c=0);for(var g,m,b;e--;)q[k]=(g=q[k-=4]*d+
|
||||
c)>255?255:g<0?0:g,q[p]=(m=q[p=k+1]*d+c)>255?255:m<0?0:m,q[a]=(b=q[a=k+2]*d+c)>255?255:b<0?0:b;return!0}},checkSupport:function(){return Pixastic.Client.hasCanvasImageData()}};
|
||||
Pixastic.Actions.desaturate={process:function(e){var c=!!(e.options.average&&e.options.average!="false");if(Pixastic.Client.hasCanvasImageData()){var h=Pixastic.prepareData(e),e=e.options.rect,e=e.width*e.height,d=e*4,n,q;if(c)for(;e--;)h[d-=4]=h[n=d+1]=h[q=d+2]=(h[d]+h[n]+h[q])/3;else for(;e--;)h[d-=4]=h[n=d+1]=h[q=d+2]=h[d]*0.3+h[n]*0.59+h[q]*0.11;return!0}else if(Pixastic.Client.isIE())return e.image.style.filter+=" gray",!0},checkSupport:function(){return Pixastic.Client.hasCanvasImageData()||
|
||||
Pixastic.Client.isIE()}};
|
||||
Pixastic.Actions.sharpen={process:function(e){var b=0;typeof e.options.amount!="undefined"&&(b=parseFloat(e.options.amount)||0);b<0&&(b=0);b>1&&(b=1);if(Pixastic.Client.hasCanvasImageData()){for(var h=Pixastic.prepareData(e),d=Pixastic.prepareData(e,!0),o=15,b=1+3*b,q=[[0,-b,0],[-b,o,-b],[0,-b,0]],k=0,p=0;p<3;p++)for(var a=0;a<3;a++)k+=q[p][a];k=1/k;q=e.options.rect;e=q.width;q=q.height;o*=k;b*=k;k=e*4;p=q;do{var a=(p-1)*k,g=(p==1?0:p-2)*k,m=(p==q?p-1:p)*k,c=e;do{var r=a+(c*4-4),f=g+(c==1?0:c-2)*
|
||||
4,t=m+(c==e?c-1:c)*4,u=(-d[f]-d[r-4]-d[r+4]-d[t])*b+d[r]*o,s=(-d[f+1]-d[r-3]-d[r+5]-d[t+1])*b+d[r+1]*o,f=(-d[f+2]-d[r-2]-d[r+6]-d[t+2])*b+d[r+2]*o;u<0&&(u=0);s<0&&(s=0);f<0&&(f=0);u>255&&(u=255);s>255&&(s=255);f>255&&(f=255);h[r]=u;h[r+1]=s;h[r+2]=f}while(--c)}while(--p);return!0}},checkSupport:function(){return Pixastic.Client.hasCanvasImageData()}};function merge(e,b){var h;typeof b==="undefined"&&(b={});for(h in e)e.hasOwnProperty(h)&&!(h in b)&&(b[h]=e[h]);return b}
|
||||
Pixastic.Actions.sharpen={process:function(e){var c=0;typeof e.options.amount!="undefined"&&(c=parseFloat(e.options.amount)||0);c<0&&(c=0);c>1&&(c=1);if(Pixastic.Client.hasCanvasImageData()){for(var h=Pixastic.prepareData(e),d=Pixastic.prepareData(e,!0),n=15,c=1+3*c,q=[[0,-c,0],[-c,n,-c],[0,-c,0]],k=0,p=0;p<3;p++)for(var a=0;a<3;a++)k+=q[p][a];k=1/k;q=e.options.rect;e=q.width;q=q.height;n*=k;c*=k;k=e*4;p=q;do{var a=(p-1)*k,g=(p==1?0:p-2)*k,m=(p==q?p-1:p)*k,b=e;do{var r=a+(b*4-4),f=g+(b==1?0:b-2)*
|
||||
4,t=m+(b==e?b-1:b)*4,u=(-d[f]-d[r-4]-d[r+4]-d[t])*c+d[r]*n,s=(-d[f+1]-d[r-3]-d[r+5]-d[t+1])*c+d[r+1]*n,f=(-d[f+2]-d[r-2]-d[r+6]-d[t+2])*c+d[r+2]*n;u<0&&(u=0);s<0&&(s=0);f<0&&(f=0);u>255&&(u=255);s>255&&(s=255);f>255&&(f=255);h[r]=u;h[r+1]=s;h[r+2]=f}while(--b)}while(--p);return!0}},checkSupport:function(){return Pixastic.Client.hasCanvasImageData()}};function merge(e,c){var h;typeof c==="undefined"&&(c={});for(h in e)e.hasOwnProperty(h)&&!(h in c)&&(c[h]=e[h]);return c}
|
||||
var ComicBookException={INVALID_PAGE:"invalid page",INVALID_PAGE_TYPE:"invalid page type",UNDEFINED_CONTROL:"undefined control",INVALID_ZOOM_MODE:"invalid zoom mode",INVALID_NAVIGATION_EVENT:"invalid navigation event"};
|
||||
function ComicBook(e,b,h){function d(){var a=window.innerHeight+1;n===!1&&(n=$(document.createElement("div")).attr("id","cb-width-shiv").css({width:"100%",position:"absolute",top:0,zIndex:"-1000"}),$("body").append(n));n.height(a);return n.innerWidth()}function o(){var a=q();a!==l&&f.indexOf(a)>-1&&(l=a,ComicBook.prototype.draw())}function q(){var a=parseInt(location.hash.substring(1),10)-1||0;if(a<0)a=location.hash=0;return a}function k(){c=document.getElementById(p);r=c.getContext("2d");s===!1&&
|
||||
(ComicBook.prototype.renderControls(),s=!0);c.addEventListener("click",ComicBook.prototype.navigation,!1);window.addEventListener("keydown",ComicBook.prototype.navigation,!1);window.addEventListener("hashchange",o,!1)}var p=e;this.srcs=b;var a=merge({displayMode:"double",zoomMode:"fitWidth",manga:!1,enhance:{},keyboard:{next:78,previous:80,toolbar:84,toggleLayout:76}},h),g=b.length,m=[],c,r,f=[],t=1,u=!1,s=!1,v=!1,n=!1,e=q(),l=e<b.length?e:0;ComicBook.prototype.control={status:$(document.createElement("div")).attr("id",
|
||||
function ComicBook(e,c,h){function d(){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 n(){var a=q();a!==l&&f.indexOf(a)>-1&&(l=a,ComicBook.prototype.draw())}function q(){var a=parseInt(location.hash.substring(1),10)-1||0;if(a<0)a=location.hash=0;return a}function k(){b=document.getElementById(p);r=b.getContext("2d");s===!1&&
|
||||
(ComicBook.prototype.renderControls(),s=!0);b.addEventListener("click",ComicBook.prototype.navigation,!1);window.addEventListener("keydown",ComicBook.prototype.navigation,!1);window.addEventListener("hashchange",n,!1)}var p=e;this.srcs=c;var a=merge({displayMode:"double",zoomMode:"fitWidth",manga:!1,enhance:{},keyboard:{next:78,previous:80,toolbar:84,toggleLayout:76}},h),g=c.length,m=[],b,r,f=[],t=1,u=!1,s=!1,v=!1,o=!1,e=q(),l=e<c.length?e:0;ComicBook.prototype.control={status:$(document.createElement("div")).attr("id",
|
||||
"cb-status").addClass("cb-control cb-always-on").append($(document.createElement("div")).attr("id","cb-progress-bar").progressbar()),toolbar:$(document.createElement("div")).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 "+a.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(t-0.1)})).append($(document.createElement("button")).attr("title","zoom in").addClass("cb-zoom-in").click(function(){ComicBook.prototype.zoom(t+0.1)})).append($(document.createElement("button")).attr("title","fit to page width").addClass("cb-fit-width").click(function(){a.zoomMode=
|
||||
"fitWidth";ComicBook.prototype.drawPage()})).append($(document.createElement("p")).attr("id","cb-comic-info").append("<span id='cb-current-page'></span> / "+b.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,change: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,
|
||||
"fitWidth";ComicBook.prototype.drawPage()})).append($(document.createElement("p")).attr("id","cb-comic-info").append("<span id='cb-current-page'></span> / "+c.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,change: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.0010,min:0,max:1,change: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.0010,min:0,max:1,change: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(){$(c).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());
|
||||
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(){$(b).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 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(){a.displayMode==="double"?($("#cb-toolbar .cb-layout").removeClass("double"),a.displayMode="single"):($("#cb-toolbar .cb-layout").removeClass("single"),a.displayMode="double");$("#cb-toolbar .cb-layout").addClass(a.displayMode);ComicBook.prototype.drawPage()};ComicBook.prototype.getPage=function(a){if(a<0||a>b.length-1)throw ComicBookException.INVALID_PAGE+" "+a;if(typeof m[a]==="object")return m[a];else v=a,this.showControl("loadingOverlay")};
|
||||
ComicBook.prototype.draw=function(){k();$(".cb-control.cb-navigate").outerHeight(window.innerHeight);$("#cb-toolbar").outerWidth(d());$("#cb-loading-overlay").outerWidth(d()).height(window.innerHeight);m.length!==g?this.preload():this.drawPage()};ComicBook.prototype.zoom=function(b){a.zoomMode="manual";t=b;typeof this.getPage(l)==="object"&&this.drawPage()};ComicBook.prototype.preload=function(){function c(d){var k=new Image;k.src=b[d];k.onload=function(){m[d]=this;f.push(d);$("#cb-progress-bar").progressbar("value",
|
||||
Math.floor(f.length/g*100));var k=a.displayMode==="double"&&l<b.length-1?1:0;if(e===!1&&$.inArray(l+k,f)!==-1||typeof v==="number"&&$.inArray(v,f)!==-1)typeof v==="number"&&(l=v-1,v=!1),ComicBook.prototype.drawPage(),ComicBook.prototype.hideControl("loadingOverlay"),e=!0;h.length?(c(h[0]),h.splice(0,1)):$("#cb-status").delay(500).fadeOut()}}var d=l,e=!1,h=[];this.showControl("loadingOverlay");(function(a,b){for(var d=1,f=a,e=a-1;f<=b;)d>3&&e>-1?(h.push(e),e--,d=0):(h.push(f),f++),d++;for(;e>-1;)h.push(e),
|
||||
e--;c(h[0])})(d,b.length-1)};ComicBook.prototype.pageLoaded=function(a){return typeof f[a-1]!=="undefined"};ComicBook.prototype.drawPage=function(e,f){var g=(typeof f!=="undefined"?f:1)?0:window.scrollY;if(typeof e==="number"&&e<b.length&&e>0&&(l=e-1,!this.pageLoaded(e))){this.showControl("loadingOverlay");return}l<0&&(l=0);var h,k=0,p=0,m=ComicBook.prototype.getPage(l),n=!1;a.displayMode==="double"&&l<b.length-1&&(n=ComicBook.prototype.getPage(l+1));if(typeof m!=="object")throw ComicBookException.INVALID_PAGE_TYPE+
|
||||
" "+typeof m;var o=m.width;c.width=0;c.height=0;if(u=typeof n==="object"&&(m.width>m.height||n.width>n.height)&&a.displayMode==="double")a.displayMode="single";a.displayMode==="double"&&(o+=typeof n==="object"?n.width:o);switch(a.zoomMode){case "manual":document.body.style.overflowX="auto";h=a.displayMode==="double"?t*2:t;break;case "fitWidth":document.body.style.overflowX="hidden";t=h=d()>o?(d()-o)/d()+1:d()/o;break;default:throw ComicBookException.INVALID_ZOOM_MODE+" "+a.zoomMode;}var o=m.width*
|
||||
h,s=m.height*h;h=a.zoomMode==="manual"?m.width*t:o;var v=a.zoomMode==="manual"?m.height*t:s,s=v;c.width=o<d()?d():o;c.height=s<window.innerHeight?window.innerHeight:s;o<d()&&a.zoomMode==="manual"&&(k=(d()-h)/2,a.displayMode==="double"&&(k-=h/2));s<window.innerHeight&&a.zoomMode==="manual"&&(p=(window.innerHeight-v)/2);a.manga&&a.displayMode==="double"&&typeof n==="object"&&(o=m,m=n,n=o);r.drawImage(m,k,p,h,v);a.displayMode==="double"&&typeof n==="object"&&r.drawImage(n,h+k,p,h,v);$.each(a.enhance,
|
||||
function(a,b){ComicBook.prototype.enhance[a](b)});k=a.displayMode==="double"&&l+2<=b.length?l+1+"-"+(l+2):l+1;$("#cb-current-page").text(k);if(u)a.displayMode="double";$("button.cb-fit-width").attr("disabled",a.zoomMode==="fitWidth");$(".cb-navigate").show();l===0&&($(".cb-navigate.left").hide(),$(".cb-navigate.right").show());if(l===b.length-1||typeof n==="object"&&l===b.length-2)$(".cb-navigate.left").show(),$(".cb-navigate.right").hide();typeof a.afterDrawPage==="function"&&a.afterDrawPage(l+1);
|
||||
$("#cb-toolbar, .cb-control.open").show()};ComicBook.prototype.toggleLayout=function(){a.displayMode==="double"?($("#cb-toolbar .cb-layout").removeClass("double"),a.displayMode="single"):($("#cb-toolbar .cb-layout").removeClass("single"),a.displayMode="double");$("#cb-toolbar .cb-layout").addClass(a.displayMode);ComicBook.prototype.drawPage()};ComicBook.prototype.getPage=function(a){if(a<0||a>c.length-1)throw ComicBookException.INVALID_PAGE+" "+a;if(typeof m[a]==="object")return m[a];else v=a,this.showControl("loadingOverlay")};
|
||||
ComicBook.prototype.draw=function(){k();$(".cb-control.cb-navigate").outerHeight(window.innerHeight);$("#cb-toolbar").outerWidth(d());$("#cb-loading-overlay").outerWidth(d()).height(window.innerHeight);m.length!==g?this.preload():this.drawPage()};ComicBook.prototype.zoom=function(b){a.zoomMode="manual";t=b;typeof this.getPage(l)==="object"&&this.drawPage()};ComicBook.prototype.preload=function(){function b(d){var k=new Image;k.src=c[d];k.onload=function(){m[d]=this;f.push(d);$("#cb-progress-bar").progressbar("value",
|
||||
Math.floor(f.length/g*100));var k=a.displayMode==="double"&&l<c.length-1?1:0;if(e===!1&&$.inArray(l+k,f)!==-1||typeof v==="number"&&$.inArray(v,f)!==-1)typeof v==="number"&&(l=v-1,v=!1),ComicBook.prototype.drawPage(),ComicBook.prototype.hideControl("loadingOverlay"),e=!0;h.length?(b(h[0]),h.splice(0,1)):$("#cb-status").delay(500).fadeOut()}}var d=l,e=!1,h=[];this.showControl("loadingOverlay");(function(a,c){for(var d=1,f=a,e=a-1;f<=c;)d>3&&e>-1?(h.push(e),e--,d=0):(h.push(f),f++),d++;for(;e>-1;)h.push(e),
|
||||
e--;b(h[0])})(d,c.length-1)};ComicBook.prototype.pageLoaded=function(a){return typeof f[a-1]!=="undefined"};ComicBook.prototype.drawPage=function(e,f){var g=(typeof f!=="undefined"?f:1)?0:window.scrollY;if(typeof e==="number"&&e<c.length&&e>0&&(l=e-1,!this.pageLoaded(e))){this.showControl("loadingOverlay");return}l<0&&(l=0);var h,k=0,p=0,m=ComicBook.prototype.getPage(l),n=!1;a.displayMode==="double"&&l<c.length-1&&(n=ComicBook.prototype.getPage(l+1));if(typeof m!=="object")throw ComicBookException.INVALID_PAGE_TYPE+
|
||||
" "+typeof m;var o=m.width;b.width=0;b.height=0;if(u=typeof n==="object"&&(m.width>m.height||n.width>n.height)&&a.displayMode==="double")a.displayMode="single";a.displayMode==="double"&&(o+=typeof n==="object"?n.width:o);switch(a.zoomMode){case "manual":document.body.style.overflowX="auto";h=a.displayMode==="double"?t*2:t;break;case "fitWidth":document.body.style.overflowX="hidden";t=h=d()>o?(d()-o)/d()+1:d()/o;break;default:throw ComicBookException.INVALID_ZOOM_MODE+" "+a.zoomMode;}var o=m.width*
|
||||
h,s=m.height*h;h=a.zoomMode==="manual"?m.width*t:o;var v=a.zoomMode==="manual"?m.height*t:s,s=v;b.width=o<d()?d():o;b.height=s<window.innerHeight?window.innerHeight:s;o<d()&&a.zoomMode==="manual"&&(k=(d()-h)/2,a.displayMode==="double"&&(k-=h/2));s<window.innerHeight&&a.zoomMode==="manual"&&(p=(window.innerHeight-v)/2);a.manga&&a.displayMode==="double"&&typeof n==="object"&&(o=m,m=n,n=o);r.drawImage(m,k,p,h,v);a.displayMode==="double"&&typeof n==="object"&&r.drawImage(n,h+k,p,h,v);$.each(a.enhance,
|
||||
function(a,b){ComicBook.prototype.enhance[a](b)});k=a.displayMode==="double"&&l+2<=c.length?l+1+"-"+(l+2):l+1;$("#cb-current-page").text(k);if(u)a.displayMode="double";$("button.cb-fit-width").attr("disabled",a.zoomMode==="fitWidth");$(".cb-navigate").show();l===0&&($(".cb-navigate.left").hide(),$(".cb-navigate.right").show());if(l===c.length-1||typeof n==="object"&&l===c.length-2)$(".cb-navigate.left").show(),$(".cb-navigate.right").hide();typeof a.afterDrawPage==="function"&&a.afterDrawPage(l+1);
|
||||
if(q()!==l)location.hash=l+1;window.scroll(0,g)};ComicBook.prototype.drawNextPage=function(){var b;try{b=this.getPage(l+1)}catch(c){}if(!b)return!1;if(l+1<m.length){l+=a.displayMode==="single"||u?1:2;try{this.drawPage()}catch(d){}}};ComicBook.prototype.drawPrevPage=function(){var b;try{b=this.getPage(l-1)}catch(c){}if(!b)return!1;u=b.width>b.height;l>0&&(l-=a.displayMode==="single"||u?1:2,this.drawPage())};ComicBook.prototype.enhance={reset:function(b){b?delete a.enhance[b]:a.enhance={};ComicBook.prototype.drawPage(null,
|
||||
!1)},brightness:function(b,d){d!==!1&&this.reset("brightness");var e=merge({brightness:0,contrast:0},b);a.enhance.brightness=e;Pixastic.process(c,"brightness",{brightness:e.brightness,contrast:e.contrast,legacy:!0});k()},desaturate:function(){a.enhance.desaturate={};Pixastic.process(c,"desaturate",{average:!1});k()},resaturate:function(){delete a.enhance.desaturate;ComicBook.prototype.drawPage(null,!1)},sharpen:function(b){this.desharpen();b=merge({amount:0},b);a.enhance.sharpen=b;Pixastic.process(c,
|
||||
"sharpen",{amount:b.amount});k()},desharpen:function(){delete a.enhance.sharpen;ComicBook.prototype.drawPage(null,!1)}};ComicBook.prototype.navigation=function(b){if($("#cb-loading-overlay").is(":visible"))return!1;var c=!1;switch(b.type){case "click":ComicBook.prototype.toggleToolbar();break;case "keydown":b.keyCode===a.keyboard.previous&&(c="left");b.keyCode===a.keyboard.next&&(c="right");b.keyCode===a.keyboard.toolbar&&ComicBook.prototype.toggleToolbar();b.keyCode===a.keyboard.toggleLayout&&ComicBook.prototype.toggleLayout();
|
||||
break;default:throw ComicBookException.INVALID_NAVIGATION_EVENT+" "+b.type;}if(c)return b.stopPropagation(),a.manga?(c==="left"&&ComicBook.prototype.drawNextPage(),c==="right"&&ComicBook.prototype.drawPrevPage()):(c==="left"&&ComicBook.prototype.drawPrevPage(),c==="right"&&ComicBook.prototype.drawNextPage()),!1}};
|
||||
!1)},brightness:function(c,d){d!==!1&&this.reset("brightness");var e=merge({brightness:0,contrast:0},c);a.enhance.brightness=e;Pixastic.process(b,"brightness",{brightness:e.brightness,contrast:e.contrast,legacy:!0});k()},desaturate:function(){a.enhance.desaturate={};Pixastic.process(b,"desaturate",{average:!1});k()},resaturate:function(){delete a.enhance.desaturate;ComicBook.prototype.drawPage(null,!1)},sharpen:function(c){this.desharpen();c=merge({amount:0},c);a.enhance.sharpen=c;Pixastic.process(b,
|
||||
"sharpen",{amount:c.amount});k()},desharpen:function(){delete a.enhance.sharpen;ComicBook.prototype.drawPage(null,!1)}};ComicBook.prototype.navigation=function(b){if($("#cb-loading-overlay").is(":visible"))return!1;var c=!1;switch(b.type){case "click":ComicBook.prototype.toggleToolbar();break;case "keydown":b.keyCode===a.keyboard.previous&&(c="left");b.keyCode===a.keyboard.next&&(c="right");b.keyCode===a.keyboard.toolbar&&ComicBook.prototype.toggleToolbar();b.keyCode===a.keyboard.toggleLayout&&ComicBook.prototype.toggleLayout();
|
||||
break;default:throw ComicBookException.INVALID_NAVIGATION_EVENT+" "+b.type;}if(c)return b.stopPropagation(),a.manga?(c==="left"&&ComicBook.prototype.drawNextPage(),c==="right"&&ComicBook.prototype.drawPrevPage()):(c==="left"&&ComicBook.prototype.drawPrevPage(),c==="right"&&ComicBook.prototype.drawNextPage()),!1};ComicBook.prototype.destroy=function(){$("#cb-loading-overlay, #cb-status, #cb-color, .cb-control, .cb-toolbar, #cb-width-shiv").remove();b.width=0;b.height=0;window.removeEventListener("keydown",
|
||||
ComicBook.prototype.navigation,!1);window.removeEventListener("hashchange",n,!1);location.hash="";$(this).trigger("destroy")}};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue