Center pdf manual zoom mode (#10246)

Center PDF content when its width is smaller than the screen

fix #9967
This commit is contained in:
nairyo
2023-03-31 17:29:16 +02:00
committed by GitHub
parent a3080b042a
commit 983e083a0b
3 changed files with 17 additions and 9 deletions

View File

@@ -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,
}