|
|
@ -56,6 +56,8 @@ Document = {
|
|
|
|
date = ""
|
|
|
|
date = ""
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GAMMA_NO_GAMMA = 1.0,
|
|
|
|
|
|
|
|
|
|
|
|
-- override bbox from orignal page's getUsedBBox
|
|
|
|
-- override bbox from orignal page's getUsedBBox
|
|
|
|
bbox = {},
|
|
|
|
bbox = {},
|
|
|
|
|
|
|
|
|
|
|
@ -182,8 +184,8 @@ function Document:getToc()
|
|
|
|
return self._document:getToc()
|
|
|
|
return self._document:getToc()
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
function Document:renderPage(pageno, rect, zoom, rotation, render_mode)
|
|
|
|
function Document:renderPage(pageno, rect, zoom, rotation, gamma, render_mode)
|
|
|
|
local hash = "renderpg|"..self.file.."|"..pageno.."|"..zoom.."|"..rotation.."|"..render_mode
|
|
|
|
local hash = "renderpg|"..self.file.."|"..pageno.."|"..zoom.."|"..rotation.."|"..gamma.."|"..render_mode
|
|
|
|
local page_size = self:getPageDimensions(pageno, zoom, rotation)
|
|
|
|
local page_size = self:getPageDimensions(pageno, zoom, rotation)
|
|
|
|
-- this will be the size we actually render
|
|
|
|
-- this will be the size we actually render
|
|
|
|
local size = page_size
|
|
|
|
local size = page_size
|
|
|
@ -198,7 +200,7 @@ function Document:renderPage(pageno, rect, zoom, rotation, render_mode)
|
|
|
|
return
|
|
|
|
return
|
|
|
|
end
|
|
|
|
end
|
|
|
|
-- only render required part
|
|
|
|
-- only render required part
|
|
|
|
hash = "renderpg|"..self.file.."|"..pageno.."|"..zoom.."|"..rotation.."|"..render_mode.."|"..tostring(rect)
|
|
|
|
hash = "renderpg|"..self.file.."|"..pageno.."|"..zoom.."|"..rotation.."|"..gamma.."|"..render_mode.."|"..tostring(rect)
|
|
|
|
size = rect
|
|
|
|
size = rect
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
@ -224,6 +226,11 @@ function Document:renderPage(pageno, rect, zoom, rotation, render_mode)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
dc:setZoom(zoom)
|
|
|
|
dc:setZoom(zoom)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if gamma ~= self.GAMMA_NO_GAMMA then
|
|
|
|
|
|
|
|
--DEBUG("gamma correction: ", gamma)
|
|
|
|
|
|
|
|
dc:setGamma(gamma)
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
-- render
|
|
|
|
-- render
|
|
|
|
local page = self._document:openPage(pageno)
|
|
|
|
local page = self._document:openPage(pageno)
|
|
|
|
page:draw(dc, tile.bb, size.x, size.y, render_mode)
|
|
|
|
page:draw(dc, tile.bb, size.x, size.y, render_mode)
|
|
|
@ -235,10 +242,11 @@ end
|
|
|
|
|
|
|
|
|
|
|
|
-- a hint for the cache engine to paint a full page to the cache
|
|
|
|
-- a hint for the cache engine to paint a full page to the cache
|
|
|
|
-- TODO: this should trigger a background operation
|
|
|
|
-- TODO: this should trigger a background operation
|
|
|
|
function Document:hintPage(pageno, zoom, rotation, render_mode)
|
|
|
|
function Document:hintPage(pageno, zoom, rotation, gamma, render_mode)
|
|
|
|
local hash_full_page = "renderpg|"..self.file.."|"..pageno.."|"..zoom.."|"..rotation.."|"..render_mode
|
|
|
|
local hash_full_page = "renderpg|"..self.file.."|"..pageno.."|"..zoom.."|"..rotation.."|"..gamma.."|"..render_mode
|
|
|
|
if not Cache:check(hash_full_page) then
|
|
|
|
if not Cache:check(hash_full_page) then
|
|
|
|
self:renderPage(pageno, nil, zoom, rotation, render_mode)
|
|
|
|
--DEBUG("hinting page", pageno)
|
|
|
|
|
|
|
|
self:renderPage(pageno, nil, zoom, rotation, gamma, render_mode)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
@ -250,15 +258,15 @@ Draw page content to blitbuffer.
|
|
|
|
@target: target blitbuffer
|
|
|
|
@target: target blitbuffer
|
|
|
|
@rect: visible_area inside document page
|
|
|
|
@rect: visible_area inside document page
|
|
|
|
--]]
|
|
|
|
--]]
|
|
|
|
function Document:drawPage(target, x, y, rect, pageno, zoom, rotation, render_mode)
|
|
|
|
function Document:drawPage(target, x, y, rect, pageno, zoom, rotation, gamma, render_mode)
|
|
|
|
local hash_full_page = "renderpg|"..self.file.."|"..pageno.."|"..zoom.."|"..rotation.."|"..render_mode
|
|
|
|
local hash_full_page = "renderpg|"..self.file.."|"..pageno.."|"..zoom.."|"..rotation.."|"..gamma.."|"..render_mode
|
|
|
|
local hash_excerpt = hash_full_page.."|"..tostring(rect)
|
|
|
|
local hash_excerpt = hash_full_page.."|"..tostring(rect)
|
|
|
|
local tile = Cache:check(hash_full_page)
|
|
|
|
local tile = Cache:check(hash_full_page)
|
|
|
|
if not tile then
|
|
|
|
if not tile then
|
|
|
|
tile = Cache:check(hash_excerpt)
|
|
|
|
tile = Cache:check(hash_excerpt)
|
|
|
|
if not tile then
|
|
|
|
if not tile then
|
|
|
|
DEBUG("rendering")
|
|
|
|
DEBUG("rendering")
|
|
|
|
tile = self:renderPage(pageno, rect, zoom, rotation, render_mode)
|
|
|
|
tile = self:renderPage(pageno, rect, zoom, rotation, gamma, render_mode)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
DEBUG("now painting", tile, rect)
|
|
|
|
DEBUG("now painting", tile, rect)
|
|
|
|