implement separate odd/even bboxes

pull/2/merge
Dobrica Pavlinusic 12 years ago
parent 24ca5854c5
commit 5de2fb1a53

@ -67,7 +67,7 @@ UniReader = {
jump_stack = {},
toc = nil,
bbox = nil, -- override getUsedBBox
bbox = {}, -- override getUsedBBox
}
function UniReader:new(o)
@ -197,10 +197,22 @@ function UniReader:setzoom(page)
if self.bbox then
print("# ORIGINAL page::getUsedBBox "..x0.."*"..y0.." "..x1.."*"..y1);
x0 = self.bbox["x0"]
y0 = self.bbox["y0"]
x1 = self.bbox["x1"]
y1 = self.bbox["y1"]
local bbox = self.bbox[self.pageno] -- exact
if bbox == nil then
bbox = self.bbox[self:odd_even(self.pageno)] -- odd/even
end
if bbox == nil then -- last used up to this page
for i = 0,self.pageno do
bbox = self.bbox[ self.pageno - i ]
if bbox ~= nil then break end
end
end
if bbox ~= nil then
x0 = bbox["x0"]
y0 = bbox["y0"]
x1 = bbox["x1"]
y1 = bbox["y1"]
end
end
print("# page::getUsedBBox "..x0.."*"..y0.." "..x1.."*"..y1);
@ -494,10 +506,19 @@ function UniReader:showJumpStack()
end
end
function UniReader:odd_even(number)
print("## odd_even "..number)
if number % 2 == 1 then
return "odd"
else
return "even"
end
end
-- wait for input and handle it
function UniReader:inputloop()
local keep_running = true
self.bbox = {}
while 1 do
local ev = input.waitForEvent()
ev.code = adjustKeyEvents(ev)
@ -589,8 +610,10 @@ function UniReader:inputloop()
bbox["y0"] = - self.offset_y / self.globalzoom
bbox["x1"] = bbox["x0"] + width / self.globalzoom
bbox["y1"] = bbox["y0"] + height / self.globalzoom
self.bbox = bbox
print("# bbox " .. dump(self.bbox))
self.bbox[self.pageno] = bbox
self.bbox[self:odd_even(self.pageno)] = bbox
print("# bbox " .. self.pageno .. dump(self.bbox))
self.globalzoommode = self.ZOOM_FIT_TO_CONTENT -- use bbox
end
-- switch to ZOOM_BY_VALUE to enable panning on fiveway move

Loading…
Cancel
Save