1
0
mirror of https://github.com/pdf2htmlEX/pdf2htmlEX.git synced 2024-07-05 17:48:38 +00:00

disable js zoom

This commit is contained in:
Lu Wang 2012-09-23 17:26:12 +08:00
parent b6ac8eb8f0
commit baddd64c2f

View File

@ -10,13 +10,58 @@
* Copyright 2012 Lu Wang <coolwanglu@gmail.com> * Copyright 2012 Lu Wang <coolwanglu@gmail.com>
*/ */
var pdf2htmlEX = { var pdf2htmlEX = (function(){
var EPS = 1e-6;
var Page = function(page, box, visible) {
this.p = page;
this.b = box;
this.v = visible;
/*
* scale ratios
*
* default_r : the first one
* set_r : last set
* cur_r : currently using
*/
this.default_r = this.set_r = this.cur_r = page.height() / box.height();
};
Page.prototype.hide = function(){
if(this.v) {
this.v = false;
this.b.hide();
}
};
Page.prototype.show = function(){
if(Math.abs(this.set_r - this.cur_r) > EPS) {
this.cur_r = this.set_r;
this.b.css('transform', 'scale('+this.cur_r.toFixed(3)+')');
}
if(!(this.v)) {
this.v = true;
this.b.show();
}
};
Page.prototype.rescale = function(ratio, is_relative) {
if(ratio == 0) {
this.set_r = this.default_r;
} else if (is_relative) {
this.set_r *= ratio;
} else {
this.set_r = ratio;
}
/* wait for redraw */
this.hide();
this.p.height(this.b.height() * this.set_r);
this.p.width(this.b.width() * this.set_r);
};
return {
pages : [], pages : [],
page_boxes : [],
container : null, container : null,
selective_render_timer : null, render_timer : null,
default_scale_ratio : 1.0,
cur_scale_ratio : 1.0,
/* Constants */ /* Constants */
render_timeout : 200, render_timeout : 200,
@ -28,21 +73,22 @@ var pdf2htmlEX = {
}, },
init_after_loading_content : function() { init_after_loading_content : function() {
this.pages = $(".p");
this.page_boxes = $(".b");
this.container = $("#pdf-main"); this.container = $("#pdf-main");
if(this.pages.length > 0) var new_pages = new Array();
{ var pl= $(".p");
this.default_scale_ratio = this.cur_scale_ratio var pbl = $(".b");
= $(this.pages[0]).height() / $(this.page_boxes[0]).height(); for(var i = 0, l = pl.length; i < l; ++i) {
new_pages.push(new Page($(pl[i]), $(pbl[i]), false));
} }
this.pages = new_pages;
this.selective_render();
var _ = this; var _ = this;
this.container.scroll(function(){ _.schedule_render(); }); this.container.scroll(function(){ _.schedule_render(); });
this.zoom_fixer();
//this.zoom_fixer();
this.render();
}, },
init : function() { init : function() {
@ -68,45 +114,46 @@ var pdf2htmlEX = {
}, },
hide_pages : function() { hide_pages : function() {
for(var i = 0, l = this.page_boxes.length; i < l; ++i) var pl = this.pages;
{ for(var i = 0, l = pl.length; i < l; ++i)
$(this.page_boxes[i]).hide(); pl[i].hide();
}
}, },
selective_render : function () { render : function () {
/* hide (positional) invisible pages */ /* hide (positional) invisible pages */
var l = this.pages.length; var pl = this.pages;
var l = pl.length;
var ch = this.container.height(); var ch = this.container.height();
var i; var i;
for(i = 0; i < l; ++i) { for(i = 0; i < l; ++i) {
var cur_page = $(this.pages[i]); var p = pl[i];
if(cur_page.offset().top + cur_page.height() >= 0) break; if(p.p.offset().top + p.p.height() >= 0) break;
if(i > 0) $(this.page_boxes[i-1]).hide(); if(i > 0) pl[i-1].hide();
} }
if((i > 0) && (i < l)) $(this.page_boxes[i-1]).show(); if((i > 0) && (i < l)) pl[i-1].show();
for(; i < l; ++i) { for(; i < l; ++i) {
$(this.page_boxes[i]).show(); var p = pl[i];
p.show();
if($(this.pages[i]).offset().top > ch) break; if(p.p.offset().top > ch) break;
} }
for(++i; i < l; ++i) { for(++i; i < l; ++i) {
$(this.page_boxes[i]).hide(); pl[i].hide();
} }
}, },
schedule_render : function() { schedule_render : function() {
if(this.selective_render_timer) if(this.render_timer)
clearTimeout(this.selective_render_timer); clearTimeout(this.render_timer);
var _ = this; var _ = this;
this.selective_render_timer = setTimeout(function () { this.render_timer = setTimeout(function () {
_.selective_render(); _.render();
}, this.render_timeout); }, this.render_timeout);
}, },
@ -140,7 +187,7 @@ var pdf2htmlEX = {
_.rescale(_.scale_step, true); _.rescale(_.scale_step, true);
break; break;
case 48: // '0' case 48: // '0'
_.rescale(_.default_scale_ratio, false); _.rescale(0, false);
break; break;
default: default:
return; return;
@ -151,21 +198,9 @@ var pdf2htmlEX = {
}, },
rescale : function (ratio, is_relative) { rescale : function (ratio, is_relative) {
console.log('RESCALE'); var pl = this.pages;
for(var i = 0, l = pl.length; i < l; ++i) {
if(is_relative) pl[i].rescale(ratio, is_relative);
ratio *= this.cur_scale_ratio;
this.cur_scale_ratio = ratio;
this.hide_pages();
for(var i = 0, l = this.page_boxes.length; i < l; ++i)
{
var p = $(this.pages[i]);
var pb = $(this.page_boxes[i]);
p.height(pb.height() * ratio);
p.width(pb.width() * ratio);
pb.css('transform', 'scale('+ratio.toFixed(3)+')');
} }
this.schedule_render(); this.schedule_render();
@ -173,3 +208,4 @@ var pdf2htmlEX = {
__last_member__ : 'no comma' /*,*/ __last_member__ : 'no comma' /*,*/
}.init(); }.init();
})();