diff --git a/js/term/screen_parser.js b/js/term/screen_parser.js index b767df5..a2c8dd3 100644 --- a/js/term/screen_parser.js +++ b/js/term/screen_parser.js @@ -86,12 +86,10 @@ module.exports = class ScreenParser { const newHeight = du(strArray[ci++]) const newWidth = du(strArray[ci++]) const theme = du(strArray[ci++]) - const defFg = du(strArray[ci++]) | (du(strArray[ci++]) << 12) - const defBg = du(strArray[ci++]) | (du(strArray[ci++]) << 12) + const defFg = (du(strArray[ci++]) & 0xFFFF) | ((du(strArray[ci++]) & 0xFFFF) << 16) + const defBg = (du(strArray[ci++]) & 0xFFFF) | ((du(strArray[ci++]) & 0xFFFF) << 16) const attributes = du(strArray[ci++]) - console.log(`set colors ${defFg}, ${defBg}, theme ${theme}`) - // theming this.screen.renderer.loadTheme(theme) this.screen.renderer.setDefaultColors(defFg, defBg) @@ -323,8 +321,8 @@ module.exports = class ScreenParser { case SEQ_SET_FG: data = du(strArray[ci++]) if (data & 0x10000) { - data ^= 0x10000 - data |= du(strArray[ci++]) << 12 + data &= 0xFFF + data |= (du(strArray[ci++]) & 0xFFF) << 12 data += 256 } fg = data @@ -333,8 +331,8 @@ module.exports = class ScreenParser { case SEQ_SET_BG: data = du(strArray[ci++]) if (data & 0x10000) { - data ^= 0x10000 - data |= du(strArray[ci++]) << 12 + data &= 0xFFF + data |= (du(strArray[ci++]) & 0xFFF) << 12 data += 256 } bg = data diff --git a/js/term/themes.js b/js/term/themes.js index f2bff54..5cab5ca 100644 --- a/js/term/themes.js +++ b/js/term/themes.js @@ -98,24 +98,26 @@ exports.buildColorTable = function () { exports.SELECTION_FG = '#333' exports.SELECTION_BG = '#b2d7fe' -function resolveColor (themeN, shade) { - shade = +shade - if (shade < 16) shade = themes[themeN][shade] - else { - shade = exports.buildColorTable()[shade] - } - return shade -} - -exports.themePreview = function (n) { +exports.themePreview = function (themeN) { document.querySelectorAll('[data-fg]').forEach((elem) => { let shade = elem.dataset.fg - if (/^\d+$/.test(shade)) shade = resolveColor(n, shade) + if (/^\d+$/.test(shade)) shade = exports.toCss(shade, themeN) elem.style.color = shade }) document.querySelectorAll('[data-bg]').forEach((elem) => { let shade = elem.dataset.bg - if (/^\d+$/.test(shade)) shade = resolveColor(n, shade) + if (/^\d+$/.test(shade)) shade = exports.toCss(shade, themeN) elem.style.backgroundColor = shade }) } + +exports.toCss = function (shade, themeN) { + if (/^\d+$/.test(shade)) { + shade = +shade + if (shade < 16) shade = themes[themeN][shade] + else { + shade = exports.buildColorTable()[shade] + } + } + return shade +} diff --git a/pages/cfg_term.php b/pages/cfg_term.php index 13560ee..5993342 100644 --- a/pages/cfg_term.php +++ b/pages/cfg_term.php @@ -12,7 +12,7 @@
- @@ -26,6 +26,8 @@ + +
@@ -59,25 +61,25 @@
- 01234567 + 01234567
- 89101112131415 + 89101112131415
@@ -292,69 +294,89 @@ diff --git a/sass/pages/_term.scss b/sass/pages/_term.scss index ae23265..56f2de6 100644 --- a/sass/pages/_term.scss +++ b/sass/pages/_term.scss @@ -381,3 +381,23 @@ body.pseudo-fullscreen { display: inline-block; padding: 5px; } + +.theme-nav-btn { + width: 2em; + height: 2em; + display: flex; + align-items: center; + justify-content: space-around; + background: #4c4c4c; + color: #eaeaea; + margin: 5px; + border-radius: 5px; + + @include noselect(); + + cursor: pointer; + position: relative; + &:active { + top: 1px; + } +}