1
0
mirror of https://github.com/pdf2htmlEX/pdf2htmlEX.git synced 2024-12-21 20:50:07 +00:00

working on remove offset()

This commit is contained in:
Lu Wang 2013-11-05 00:13:32 +08:00
parent af60845550
commit 75908842f5
2 changed files with 8 additions and 36 deletions

1
TODO
View File

@ -7,7 +7,6 @@ more information on demo page:
- browser requirements - browser requirements
page idx vs no page idx vs no
move $container outside Page
tracking current page tracking current page
more js annoatation more js annoatation
pdf:mobile device pdf:mobile device

View File

@ -190,43 +190,16 @@
* in our coordinate system * in our coordinate system
*/ */
position : function () { position : function () {
return this.offset_to(this.$container.get(0)); var rect = this.$p[0].getBoundingClientRect();
// getBoundingClientRect will be called on $container
// for a lot of times(= #pages), just hope JIT works
var rect_c = this.$container[0].getBoundingClientRect();
return [rect_c.left-rect.left, rect_c.top-rect.top];
/* /*
var off = this.$p.offset(); var off = this.$p.offset();
var off_c = this.$container.offset(); var off_c = this.$container.offset();
return [off_c.left-off.left, off_c.top-off.top]; return [off_c.left-off.left, off_c.top-off.top];
*/ */
},
/*
* Similar to position, but specify container as ele
* ele must be an ancestor node of current page
* TODO: remove position
* TODO: consider border
* TODO: consider scroll
*/
offset_to : function (ele) {
var elep = ele.offsetParent;
var cur_e = this.$p.get(0);
var cur_top = 0;
var cur_left = 0;
while(true) {
switch(cur_e) {
case null:
return;
case elep:
cur_top -= ele.offsetTop;
cur_left -= ele.offsetLeft;
/* fall through */
case ele:
window['console']['log'](cur_top+' '+cur_left);
return [cur_top, cur_left];
default:
cur_top += cur_e.offsetTop;
cur_left += cur_e.offsetLeft;
cur_e = cur_e.offsetParent;
}
}
} }
}); });
@ -287,7 +260,7 @@
find_pages : function() { find_pages : function() {
var new_pages = []; var new_pages = [];
var new_page_map = {}; var new_page_map = {};
var $pl= $('.'+CSS_CLASS_NAMES.page_frame, this.$container); var $pl= this.$container.find('.'+CSS_CLASS_NAMES.page_frame);
/* don't use for(..in..) since $pl is more than an Array */ /* don't use for(..in..) since $pl is more than an Array */
for(var i = 0, l = $pl.length; i < l; ++i) { for(var i = 0, l = $pl.length; i < l; ++i) {
var p = new Page($pl[i], this.$container); var p = new Page($pl[i], this.$container);
@ -503,7 +476,7 @@
var active_page = this.get_active_page(); var active_page = this.get_active_page();
if(!active_page) return; if(!active_page) return;
var prev_offset = active_page.$p.offset(); var prev_offset = active_page.$p[0].getBoundingClientRect();
var old_scale = this.scale; var old_scale = this.scale;
var pl = this.pages; var pl = this.pages;
@ -539,7 +512,7 @@
} }
// Correct container scroll to keep view aligned while zooming // Correct container scroll to keep view aligned while zooming
var correction_top = active_page.$p.offset().top - prev_offset.top; var correction_top = active_page.$p[0].getBoundingClientRect().top - prev_offset.top;
this.$container.scrollTop( this.$container.scrollTop() + correction_top + offsetY ); this.$container.scrollTop( this.$container.scrollTop() + correction_top + offsetY );
// Take the center of the view as a reference // Take the center of the view as a reference