bugfix: calculate page zoom before hinting

pull/2/merge
chrox 11 years ago
parent 9e5a036c6e
commit 64949444f6

@ -109,27 +109,33 @@ function ReaderZooming:onPageUpdate(new_page_no)
self:setZoom() self:setZoom()
end end
function ReaderZooming:setZoom() function ReaderZooming:onHintPage()
-- nothing to do in free zoom mode if self.current_page < self.ui.document.info.number_of_pages then
if self.zoom_mode == "free" then self.ui.document:hintPage(
return self.view.state.page + 1,
end self:getZoom(self.view.state.page + 1),
if not self.dimen then self.view.state.rotation,
self.dimen = self.ui.dimen self.view.state.gamma,
self.view.render_mode)
end end
return true
end
function ReaderZooming:getZoom(pageno)
-- check if we're in bbox mode and work on bbox if that's the case -- check if we're in bbox mode and work on bbox if that's the case
local zoom = nil
local page_size = {} local page_size = {}
if self.zoom_mode == "content" if self.zoom_mode == "content"
or self.zoom_mode == "contentwidth" or self.zoom_mode == "contentwidth"
or self.zoom_mode == "contentheight" then or self.zoom_mode == "contentheight" then
ubbox_dimen = self.ui.document:getUsedBBoxDimensions(self.current_page, 1) local ubbox_dimen = self.ui.document:getUsedBBoxDimensions(pageno, 1)
--self.view:handleEvent(Event:new("BBoxUpdate", page_size)) --self.view:handleEvent(Event:new("BBoxUpdate", page_size))
self.view:onBBoxUpdate(ubbox_dimen) self.view:onBBoxUpdate(ubbox_dimen)
page_size = ubbox_dimen page_size = ubbox_dimen
else else
-- otherwise, operate on full page -- otherwise, operate on full page
self.view:onBBoxUpdate(nil) self.view:onBBoxUpdate(nil)
page_size = self.ui.document:getNativePageDimensions(self.current_page) page_size = self.ui.document:getNativePageDimensions(pageno)
end end
-- calculate zoom value: -- calculate zoom value:
local zoom_w = self.dimen.w / page_size.w local zoom_w = self.dimen.w / page_size.w
@ -141,15 +147,27 @@ function ReaderZooming:setZoom()
end end
if self.zoom_mode == "content" or self.zoom_mode == "page" then if self.zoom_mode == "content" or self.zoom_mode == "page" then
if zoom_w < zoom_h then if zoom_w < zoom_h then
self.zoom = zoom_w zoom = zoom_w
else else
self.zoom = zoom_h zoom = zoom_h
end end
elseif self.zoom_mode == "contentwidth" or self.zoom_mode == "pagewidth" then elseif self.zoom_mode == "contentwidth" or self.zoom_mode == "pagewidth" then
self.zoom = zoom_w zoom = zoom_w
elseif self.zoom_mode == "contentheight" or self.zoom_mode == "pageheight" then elseif self.zoom_mode == "contentheight" or self.zoom_mode == "pageheight" then
self.zoom = zoom_h zoom = zoom_h
end
return zoom
end
function ReaderZooming:setZoom()
-- nothing to do in free zoom mode
if self.zoom_mode == "free" then
return
end
if not self.dimen then
self.dimen = self.ui.dimen
end end
self.zoom = self:getZoom(self.current_page)
self.ui:handleEvent(Event:new("ZoomUpdate", self.zoom)) self.ui:handleEvent(Event:new("ZoomUpdate", self.zoom))
end end

Loading…
Cancel
Save