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

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

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

Loading…
Cancel
Save