mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
Move render_mode support out of unireader.lua into djvureader.lua as it is djvu-specific.
Also added support for all other rendering modes handled by djvulibre. Also made the message print a human-readable description of the mode rather than just the number.
This commit is contained in:
8
djvu.c
8
djvu.c
@@ -401,15 +401,9 @@ static int drawPage(lua_State *L) {
|
||||
DrawContext *dc = (DrawContext*) luaL_checkudata(L, 2, "drawcontext");
|
||||
BlitBuffer *bb = (BlitBuffer*) luaL_checkudata(L, 3, "blitbuffer");
|
||||
int render_mode = (int) luaL_checkint(L, 6);
|
||||
ddjvu_render_mode_t djvu_render_mode;
|
||||
ddjvu_render_mode_t djvu_render_mode = render_mode;
|
||||
unsigned char adjusted_low[16], adjusted_high[16];
|
||||
int i, adjust_pixels = 0;
|
||||
|
||||
if (render_mode)
|
||||
djvu_render_mode = DDJVU_RENDER_BLACK;
|
||||
else
|
||||
djvu_render_mode = DDJVU_RENDER_COLOR;
|
||||
|
||||
ddjvu_format_t *pixelformat;
|
||||
ddjvu_rect_t pagerect, renderrect;
|
||||
uint8_t *imagebuffer = NULL;
|
||||
|
||||
@@ -21,8 +21,48 @@ end
|
||||
function DJVUReader:adjustDjvuReaderCommand()
|
||||
self.commands:del(KEY_J, MOD_SHIFT, "J")
|
||||
self.commands:del(KEY_K, MOD_SHIFT, "K")
|
||||
self.commands:add(KEY_R, nil, "R",
|
||||
"colour/b&w/colouronly/maskonly/backg/foreg",
|
||||
function(self)
|
||||
self:cycle_render_mode()
|
||||
end)
|
||||
end
|
||||
|
||||
-- cycle through all rendering modes supported by djvulibre:
|
||||
-- 0 (color page or stencil)
|
||||
-- 1 (stencil or color page)
|
||||
-- 2 (color page or fail)
|
||||
-- 3 (stencil or fail)
|
||||
-- 4 (color background layer)
|
||||
-- 5 (color foreground layer)
|
||||
-- Note that if the values in the definition of ddjvu_render_mode_t in djvulibre/libdjvu/ddjvuapi.h change,
|
||||
-- then we should update our values here also. This is a bit risky, but these values never change, so it should be ok :)
|
||||
function DJVUReader:cycle_render_mode()
|
||||
self.render_mode = (self.render_mode + 1)%6
|
||||
Debug("cycle_render_mode, render_mode=", self.render_mode)
|
||||
self:clearCache()
|
||||
self.doc:cleanCache()
|
||||
local render_mode_name
|
||||
if self.render_mode == 0 then
|
||||
render_mode_name = "COLOUR"
|
||||
elseif self.render_mode == 1 then
|
||||
render_mode_name = "BLACK & WHITE"
|
||||
elseif self.render_mode == 2 then
|
||||
render_mode_name = "COLOUR ONLY"
|
||||
elseif self.render_mode == 3 then
|
||||
render_mode_name = "MASK ONLY"
|
||||
elseif self.render_mode == 4 then
|
||||
render_mode_name = "COLOUR BACKGROUND"
|
||||
elseif self.render_mode == 5 then
|
||||
render_mode_name = "COLOUR FOREGROUND"
|
||||
else
|
||||
render_mode_name = "UNKNOWN"
|
||||
end
|
||||
showInfoMsgWithDelay("("..self.render_mode..") "..render_mode_name, 1000, 1)
|
||||
self:redrawCurrentPage()
|
||||
end
|
||||
|
||||
|
||||
|
||||
----------------------------------------------------
|
||||
-- highlight support
|
||||
|
||||
@@ -34,9 +34,9 @@ UniReader = {
|
||||
-- gamma setting:
|
||||
globalgamma = 1.0, -- GAMMA_NO_GAMMA
|
||||
|
||||
-- rendering mode toggle (used in djvu.c:drawPage())
|
||||
-- if set to 1 render in BLACK & WHITE, otherwise COLOR
|
||||
render_mode = 1,
|
||||
-- DjVu page rendering mode (used in djvu.c:drawPage())
|
||||
-- See comments in djvureader.lua:DJVUReader:cycle_render_mode()
|
||||
render_mode = 0, -- COLOUR
|
||||
|
||||
-- cached tile size
|
||||
fullwidth = 0,
|
||||
@@ -1576,16 +1576,6 @@ function UniReader:modifyGamma(factor)
|
||||
self:redrawCurrentPage()
|
||||
end
|
||||
|
||||
-- toggle rendering mode between colour (0) and b&w (1)
|
||||
function UniReader:toggle_render_mode()
|
||||
Debug("toggle_render_mode, render_mode=", self.render_mode)
|
||||
self.render_mode = 1 - self.render_mode
|
||||
self:clearCache()
|
||||
self.doc:cleanCache()
|
||||
showInfoMsgWithDelay("New render_mode = "..self.render_mode, 1000, 1)
|
||||
self:redrawCurrentPage()
|
||||
end
|
||||
|
||||
-- adjust zoom state and trigger re-rendering
|
||||
function UniReader:setglobalzoom_mode(newzoommode)
|
||||
if self.globalzoom_mode ~= newzoommode then
|
||||
@@ -2217,11 +2207,6 @@ function UniReader:addAllCommands()
|
||||
self:redrawCurrentPage()
|
||||
end
|
||||
end)
|
||||
self.commands:add(KEY_R, nil, "R",
|
||||
"toggle rendering mode: b&w/colour",
|
||||
function(unireader)
|
||||
unireader:toggle_render_mode()
|
||||
end)
|
||||
self.commands:add(KEY_R, MOD_SHIFT, "R",
|
||||
"manual full screen refresh",
|
||||
function(unireader)
|
||||
|
||||
Reference in New Issue
Block a user