diff --git a/frontend/document/canvascontext.lua b/frontend/document/canvascontext.lua index 85ced3939..68e2cb082 100644 --- a/frontend/document/canvascontext.lua +++ b/frontend/document/canvascontext.lua @@ -32,12 +32,14 @@ The following key is required for a device object: * getDPI() -> int * getSize() -> Rect * scaleBySize(int) -> int + * isColorEnabled() -> boolean ]]-- function CanvasContext:init(device) self.screen = device.screen self.isAndroid = device.isAndroid self.isKindle = device.isKindle self.should_restrict_JIT = device.should_restrict_JIT + self:setColorRenderingEnabled(device.screen.isColorEnabled()) -- NOTE: Kobo's fb is BGR, not RGB. Handle the conversion in MuPDF if needed. if device:hasBGRFrameBuffer() then diff --git a/frontend/ui/elements/screen_color_menu_table.lua b/frontend/ui/elements/screen_color_menu_table.lua index 70ad6a01a..cc40a72be 100644 --- a/frontend/ui/elements/screen_color_menu_table.lua +++ b/frontend/ui/elements/screen_color_menu_table.lua @@ -10,8 +10,9 @@ return { checked_func = Screen.isColorEnabled, callback = function() local new_val = not Screen.isColorEnabled() - CanvasContext:setColorRenderingEnabled(new_val) + -- Screen.isColorEnabled reads G_reader_settings :'( G_reader_settings:saveSetting("color_rendering", new_val) + CanvasContext:setColorRenderingEnabled(new_val) UIManager:broadcastEvent(Event:new("ColorRenderingUpdate")) end } diff --git a/reader.lua b/reader.lua index ddbf39b3f..90ad6c29f 100755 --- a/reader.lua +++ b/reader.lua @@ -60,11 +60,6 @@ end local CanvasContext = require("document/canvascontext") CanvasContext:init(Device) -if G_reader_settings:has("color_rendering") then - CanvasContext:setColorRenderingEnabled(G_reader_settings:isTrue("color_rendering")) -else - CanvasContext:setColorRenderingEnabled(Device.screen:isColorScreen()) -end -- option parsing: local longopts = { diff --git a/spec/unit/commonrequire.lua b/spec/unit/commonrequire.lua index 020c270c7..72eb71eed 100644 --- a/spec/unit/commonrequire.lua +++ b/spec/unit/commonrequire.lua @@ -18,13 +18,13 @@ einkfb.dummy = true --luacheck: ignore local Device = require("device") -local CanvasContext = require("document/canvascontext") -CanvasContext:init(Device) - -- init output device local Screen = Device.screen Screen:init() +local CanvasContext = require("document/canvascontext") +CanvasContext:init(Device) + -- init input device (do not show SDL window) local Input = Device.input Input.dummy = true diff --git a/spec/unit/menu_table_screen_color_spec.lua b/spec/unit/menu_table_screen_color_spec.lua new file mode 100644 index 000000000..fc6514040 --- /dev/null +++ b/spec/unit/menu_table_screen_color_spec.lua @@ -0,0 +1,20 @@ +describe("menu table screen color module", function() + local menu, Screen, CanvasContext + setup(function() + require("commonrequire") + menu = require("ui/elements/screen_color_menu_table") + Screen = require("device").screen + CanvasContext = require("document/canvascontext") + end) + + it("should toggle color rendering", function() + assert.is.truthy(Screen.isColorEnabled()) + assert.is.truthy(CanvasContext.is_color_rendering_enabled) + menu.callback() + assert.is.falsy(Screen.isColorEnabled()) + assert.is.falsy(CanvasContext.is_color_rendering_enabled) + menu.callback() + assert.is.truthy(Screen.isColorEnabled()) + assert.is.truthy(CanvasContext.is_color_rendering_enabled) + end) +end)