[feat] Option to change page gap in continuous mode (#5705)

Fixes #5656.
pull/5734/head
Mustafa Ali Mutlu 4 years ago committed by Frans de Jonge
parent 5ea1a7c817
commit 12adb96206

@ -48,13 +48,8 @@ local ReaderView = OverlapGroup:extend{
page_scroll = nil,
page_bgcolor = Blitbuffer.gray(DBACKGROUND_COLOR/15),
page_states = {},
scroll_mode = "vertical",
-- properties of the gap drawn between each page in scroll mode:
page_gap = {
-- width in pixels (when scrolling horizontally)
width = Screen:scaleBySize(G_reader_settings:readSetting("page_gap_width") or 8),
-- height in pixels (when scrolling vertically)
height = Screen:scaleBySize(G_reader_settings:readSetting("page_gap_height") or 8),
-- color (0 = white, 8 = gray, 15 = black)
color = Blitbuffer.gray((G_reader_settings:readSetting("page_gap_color") or 8)/15),
},
@ -387,11 +382,7 @@ function ReaderView:getScrollPageRect(page, rect_p)
end
function ReaderView:drawPageGap(bb, x, y)
if self.scroll_mode == "vertical" then
bb:paintRect(x, y, self.dimen.w, self.page_gap.height, self.page_gap.color)
elseif self.scroll_mode == "horizontal" then
bb:paintRect(x, y, self.page_gap.width, self.dimen.h, self.page_gap.color)
end
bb:paintRect(x, y, self.dimen.w, self.page_gap.height, self.page_gap.color)
end
function ReaderView:drawSinglePage(bb, x, y)
@ -780,6 +771,8 @@ function ReaderView:onReadSettings(config)
self.page_scroll = page_scroll == 1 and true or false
self.highlight.saved = config:readSetting("highlight") or {}
self.page_overlap_style = config:readSetting("page_overlap_style") or G_reader_settings:readSetting("page_overlap_style") or "dim"
self.page_gap.height = Screen:scaleBySize(config:readSetting("kopt_page_gap_height") or
G_reader_settings:readSetting("kopt_page_gap_height") or 8)
end
function ReaderView:onPageUpdate(new_page_no)
@ -843,6 +836,14 @@ function ReaderView:onSetViewMode(new_mode)
return true
end
--Refresh after changing a variable done by koptoptions.lua since all of them
--requires full screen refresh. If this handler used for changing page gap from
--another source (eg. coptions.lua) triggering a redraw is needed.
function ReaderView:onPageGapUpdate(page_gap)
self.page_gap.height = page_gap
return true
end
function ReaderView:onSaveSettings()
self.ui.doc_settings:saveSetting("render_mode", self.render_mode)
self.ui.doc_settings:saveSetting("screen_mode", self.screen_mode)

@ -83,6 +83,19 @@ local KoptOptions = {
advanced = true,
name_text_hold_callback = optionsutil.showValues,
},
{
name = "page_gap_height",
name_text = S.PAGE_GAP,
toggle = {S.NONE, S.SMALL, S.MEDIUM, S.LARGE},
values = {0, 8, 16, 32},
default_value = 8,
args = {0, 8, 16, 32},
event = "PageGapUpdate",
enabled_func = function (configurable)
return optionsutil.enableIfEquals(configurable, "page_scroll", 1)
end,
name_text_hold_callback = optionsutil.showValues,
},
{
name = "max_columns",
name_text = S.COLUMNS,

@ -46,6 +46,7 @@ S.HW_DITHERING = _("Dithering")
S.INVERSE_READING_ORDER = _("Inverse Order")
S.IMAGE_SCALING = _("Image Scaling")
S.NIGHTMODE_IMAGES = _("Invert Images")
S.PAGE_GAP = _("Page Gap")
S.ON = _("on")
S.OFF = _("off")

Loading…
Cancel
Save