Center pdf manual zoom mode (#10246)

Center PDF content when its width is smaller than the screen

fix #9967
reviewable/pr10278/r1
nairyo 1 year ago committed by GitHub
parent a3080b042a
commit 983e083a0b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -714,7 +714,7 @@ function ReaderPaging:onUpdateScrollPageGamma(gamma)
return true return true
end end
function ReaderPaging:getNextPageState(blank_area, offset) function ReaderPaging:getNextPageState(blank_area, image_offset)
local page_area = self.view:getPageArea( local page_area = self.view:getPageArea(
self.view.state.page, self.view.state.page,
self.view.state.zoom, self.view.state.zoom,
@ -722,21 +722,25 @@ function ReaderPaging:getNextPageState(blank_area, offset)
local visible_area = Geom:new{x = 0, y = 0} local visible_area = Geom:new{x = 0, y = 0}
visible_area.w, visible_area.h = blank_area.w, blank_area.h 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.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 -- shrink blank area by the height of visible area
blank_area.h = blank_area.h - visible_area.h 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 { return {
page = self.view.state.page, page = self.view.state.page,
zoom = self.view.state.zoom, zoom = self.view.state.zoom,
rotation = self.view.state.rotation, rotation = self.view.state.rotation,
gamma = self.view.state.gamma, gamma = self.view.state.gamma,
offset = Geom:new{ x = self.view.state.offset.x, y = 0}, offset = page_offset,
visible_area = visible_area, visible_area = visible_area,
page_area = page_area, page_area = page_area,
} }
end end
function ReaderPaging:getPrevPageState(blank_area, offset) function ReaderPaging:getPrevPageState(blank_area, image_offset)
local page_area = self.view:getPageArea( local page_area = self.view:getPageArea(
self.view.state.page, self.view.state.page,
self.view.state.zoom, 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.w, visible_area.h = blank_area.w, blank_area.h
visible_area.x = page_area.x visible_area.x = page_area.x
visible_area.y = page_area.y + page_area.h - visible_area.h 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 -- shrink blank area by the height of visible area
blank_area.h = blank_area.h - visible_area.h 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 { return {
page = self.view.state.page, page = self.view.state.page,
zoom = self.view.state.zoom, zoom = self.view.state.zoom,
rotation = self.view.state.rotation, rotation = self.view.state.rotation,
gamma = self.view.state.gamma, gamma = self.view.state.gamma,
offset = Geom:new{ x = self.view.state.offset.x, y = 0}, offset = page_offset,
visible_area = visible_area, visible_area = visible_area,
page_area = page_area, page_area = page_area,
} }

@ -124,7 +124,7 @@ describe("ReaderLink module", function()
local expected_page_states = { local expected_page_states = {
{ {
gamma = 1, gamma = 1,
offset = {x = 0, y = 0}, offset = {x = 17, y = 0},
page = 3, page = 3,
page_area = { page_area = {
x = 0, y = 0, x = 0, y = 0,
@ -139,7 +139,7 @@ describe("ReaderLink module", function()
}, },
{ {
gamma = 1, gamma = 1,
offset = {x = 0, y = 0}, offset = {x = 17, y = 0},
page = 4, page = 4,
page_area = { page_area = {
h = 800, w = 566, h = 800, w = 566,

@ -124,7 +124,7 @@ describe("Readerview module", function()
local saved_ctx = { local saved_ctx = {
{ {
gamma = 1, gamma = 1,
offset = {x = 0, y = 0}, offset = {x = 17, y = 0},
page = 1, page = 1,
page_area = { page_area = {
h = 800, h = 800,

Loading…
Cancel
Save