diff --git a/mokuro/overlay_generator.py b/mokuro/overlay_generator.py index a2887b2..7a1ab01 100644 --- a/mokuro/overlay_generator.py +++ b/mokuro/overlay_generator.py @@ -260,6 +260,7 @@ def option_color(id_, text_content, value): option_toggle('menuEditableText', 'editable text ') option_select('menuFontSize', 'font size: ', ['auto', 9, 10, 11, 12, 14, 16, 18, 20, 24, 32, 40, 48, 60]) + option_toggle('menuDarkMode', 'dark mode') option_toggle('menuEInkMode', 'e-ink mode ') option_toggle('menuToggleOCRTextBoxes', 'toggle OCR text boxes on click') option_color('menuBackgroundColor', 'background color', '#C4C3D0') diff --git a/mokuro/script.js b/mokuro/script.js index 03767e2..e21b2f4 100644 --- a/mokuro/script.js +++ b/mokuro/script.js @@ -21,9 +21,10 @@ let defaultState = { defaultZoomMode: "fit to screen", toggleOCRTextBoxes: false, backgroundColor: '#C4C3D0', + darkMode: false }; -let state = JSON.parse(JSON.stringify(defaultState)); +let state = { ...defaultState }; function saveState() { localStorage.setItem(storageKey, JSON.stringify(state)); @@ -50,6 +51,7 @@ function updateUI() { document.getElementById("menuDisplayOCR").checked = state.displayOCR; document.getElementById('menuFontSize').value = state.fontSize; document.getElementById('menuEInkMode').checked = state.eInkMode; + document.getElementById('menuDarkMode').checked = state.darkMode; document.getElementById('menuDefaultZoom').value = state.defaultZoomMode; document.getElementById('menuToggleOCRTextBoxes').checked = state.toggleOCRTextBoxes; document.getElementById('menuBackgroundColor').value = state.backgroundColor; @@ -170,6 +172,12 @@ function updateProperties() { if (state.backgroundColor) { r.style.setProperty('--colorBackground', state.backgroundColor) } + + if (state.darkMode) { + pc.style.setProperty('filter', 'invert(1)'); + } else { + pc.style.setProperty('filter', 'invert(0)'); + } } document.getElementById('menuR2l').addEventListener('click', function () { @@ -228,6 +236,12 @@ document.getElementById('menuToggleOCRTextBoxes').addEventListener('click', func updateProperties(); }, false); +document.getElementById('menuDarkMode').addEventListener('click', function () { + state.darkMode = document.getElementById('menuDarkMode').checked; + saveState(); + updateProperties(); +}); + document.getElementById('menuBackgroundColor').addEventListener( 'input', function (event) { @@ -555,4 +569,4 @@ function eInkRefresh() { pc.classList.remove("inverted"); document.body.style.backgroundColor = r.style.getPropertyValue("--colorBackground"); }, 300); -} \ No newline at end of file +}