mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
Center pdf manual zoom mode (#10246)
Center PDF content when its width is smaller than the screen fix #9967
This commit is contained in:
@@ -714,7 +714,7 @@ function ReaderPaging:onUpdateScrollPageGamma(gamma)
|
||||
return true
|
||||
end
|
||||
|
||||
function ReaderPaging:getNextPageState(blank_area, offset)
|
||||
function ReaderPaging:getNextPageState(blank_area, image_offset)
|
||||
local page_area = self.view:getPageArea(
|
||||
self.view.state.page,
|
||||
self.view.state.zoom,
|
||||
@@ -722,21 +722,25 @@ function ReaderPaging:getNextPageState(blank_area, offset)
|
||||
local visible_area = Geom:new{x = 0, y = 0}
|
||||
visible_area.w, visible_area.h = blank_area.w, blank_area.h
|
||||
visible_area.x, visible_area.y = page_area.x, page_area.y
|
||||
visible_area = visible_area:shrinkInside(page_area, offset.x, offset.y)
|
||||
visible_area = visible_area:shrinkInside(page_area, image_offset.x, image_offset.y)
|
||||
-- shrink blank area by the height of visible area
|
||||
blank_area.h = blank_area.h - visible_area.h
|
||||
local page_offset = Geom:new{x = self.view.state.offset.x, y = 0}
|
||||
if blank_area.w > page_area.w then
|
||||
page_offset:offsetBy((blank_area.w - page_area.w) / 2, 0)
|
||||
end
|
||||
return {
|
||||
page = self.view.state.page,
|
||||
zoom = self.view.state.zoom,
|
||||
rotation = self.view.state.rotation,
|
||||
gamma = self.view.state.gamma,
|
||||
offset = Geom:new{ x = self.view.state.offset.x, y = 0},
|
||||
offset = page_offset,
|
||||
visible_area = visible_area,
|
||||
page_area = page_area,
|
||||
}
|
||||
end
|
||||
|
||||
function ReaderPaging:getPrevPageState(blank_area, offset)
|
||||
function ReaderPaging:getPrevPageState(blank_area, image_offset)
|
||||
local page_area = self.view:getPageArea(
|
||||
self.view.state.page,
|
||||
self.view.state.zoom,
|
||||
@@ -745,15 +749,19 @@ function ReaderPaging:getPrevPageState(blank_area, offset)
|
||||
visible_area.w, visible_area.h = blank_area.w, blank_area.h
|
||||
visible_area.x = page_area.x
|
||||
visible_area.y = page_area.y + page_area.h - visible_area.h
|
||||
visible_area = visible_area:shrinkInside(page_area, offset.x, offset.y)
|
||||
visible_area = visible_area:shrinkInside(page_area, image_offset.x, image_offset.y)
|
||||
-- shrink blank area by the height of visible area
|
||||
blank_area.h = blank_area.h - visible_area.h
|
||||
local page_offset = Geom:new{x = self.view.state.offset.x, y = 0}
|
||||
if blank_area.w > page_area.w then
|
||||
page_offset:offsetBy((blank_area.w - page_area.w) / 2, 0)
|
||||
end
|
||||
return {
|
||||
page = self.view.state.page,
|
||||
zoom = self.view.state.zoom,
|
||||
rotation = self.view.state.rotation,
|
||||
gamma = self.view.state.gamma,
|
||||
offset = Geom:new{ x = self.view.state.offset.x, y = 0},
|
||||
offset = page_offset,
|
||||
visible_area = visible_area,
|
||||
page_area = page_area,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user