mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
add rendermode support for djvu documents
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user