diff --git a/frontend/document/document.lua b/frontend/document/document.lua index 9a173f183..f9ed27091 100644 --- a/frontend/document/document.lua +++ b/frontend/document/document.lua @@ -128,7 +128,7 @@ function Document:getToc() return self._document:getToc() end -function Document:renderPage(pageno, rect, zoom, rotation) +function Document:renderPage(pageno, rect, zoom, rotation, render_mode) local hash = "renderpg|"..self.file.."|"..pageno.."|"..zoom.."|"..rotation local page_size = self:getPageDimensions(pageno, zoom, rotation) -- this will be the size we actually render @@ -172,7 +172,7 @@ function Document:renderPage(pageno, rect, zoom, rotation) -- render local page = self._document:openPage(pageno) - page:draw(dc, tile.bb, size.x, size.y) + page:draw(dc, tile.bb, size.x, size.y, render_mode) page:close() Cache:insert(hash, tile) @@ -185,7 +185,7 @@ function Document:hintPage(pageno, zoom, rotation) self:renderPage(pageno, nil, zoom, rotation) end -function Document:drawPage(target, x, y, rect, pageno, zoom, rotation) +function Document:drawPage(target, x, y, rect, pageno, zoom, rotation, render_mode) local hash_full_page = "renderpg|"..self.file.."|"..pageno.."|"..zoom.."|"..rotation local hash_excerpt = "renderpg|"..self.file.."|"..pageno.."|"..zoom.."|"..rotation.."|"..tostring(rect) local tile = Cache:check(hash_full_page) @@ -193,7 +193,7 @@ function Document:drawPage(target, x, y, rect, pageno, zoom, rotation) tile = Cache:check(hash_excerpt) if not tile then DEBUG("rendering") - tile = self:renderPage(pageno, rect, zoom, rotation) + tile = self:renderPage(pageno, rect, zoom, rotation, render_mode) end end DEBUG("now painting", tile) diff --git a/frontend/ui/reader/readerview.lua b/frontend/ui/reader/readerview.lua index 1beaf1581..6f9c1ce94 100644 --- a/frontend/ui/reader/readerview.lua +++ b/frontend/ui/reader/readerview.lua @@ -9,8 +9,9 @@ ReaderView = WidgetContainer:new{ offset = {}, bbox = nil, }, - outer_page_color = 7, + -- DjVu page rendering mode (used in djvu.c:drawPage()) + render_mode = 0, -- default to COLOR visible_area = Geom:new{x = 0, y = 0}, page_area = Geom:new{}, @@ -41,7 +42,8 @@ function ReaderView:paintTo(bb, x, y) self.visible_area, self.state.page, self.state.zoom, - self.state.rotation) + self.state.rotation, + self.render_mode) else self.ui.document:drawCurrentView( bb, @@ -88,6 +90,10 @@ function ReaderView:onSetDimensions(dimensions) self:recalculate() end +function ReaderView:onReadSettings(config) + self.render_mode = config:readSetting("render_mode") or 0 +end + function ReaderView:onPageUpdate(new_page_no) self.state.page = new_page_no self:recalculate() @@ -108,3 +114,6 @@ function ReaderView:onRotationUpdate(rotation) self:recalculate() end +function ReaderView:onCloseDocument() + self.ui.doc_settings:saveSetting("render_mode", self.render_mode) +end