From 213eace5127b1db10cbab12cc051ab1772f8c211 Mon Sep 17 00:00:00 2001 From: "G.K.MacGregor" Date: Sun, 6 Nov 2022 18:42:14 +0000 Subject: [PATCH] Add dither to mosaic manipulating keypresses --- keymap.h | 10 +++++----- levelonecommands.cpp | 2 ++ mainwidget.cpp | 8 +++++++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/keymap.h b/keymap.h index 49043c1..4062f84 100644 --- a/keymap.h +++ b/keymap.h @@ -528,15 +528,15 @@ static const QMap keymapping[24] = { // Native scan codes to toggle mosaic bits - different platforms have different scan codes! // Order is top left, top right, middle left, middle right, bottom left, bottom right, -// invert, set all, clear all +// invert, set all, clear all, dither #ifdef Q_OS_UNIX -static constexpr quint32 mosaicNativeScanCodes[9] = { - 0x18, 0x19, 0x26, 0x27, 0x34, 0x35, 0x1b, 0x29, 0x36 +static constexpr quint32 mosaicNativeScanCodes[10] = { + 0x18, 0x19, 0x26, 0x27, 0x34, 0x35, 0x1b, 0x29, 0x36, 0x28 }; #elif defined(Q_OS_WIN) -static constexpr quint32 mosaicNativeScanCodes[9] = { - 0x10, 0x11, 0x1e, 0x1f, 0x2c, 0x2d, 0x13, 0x21, 0x2e +static constexpr quint32 mosaicNativeScanCodes[10] = { + 0x10, 0x11, 0x1e, 0x1f, 0x2c, 0x2d, 0x13, 0x21, 0x2e, 0x20 }; #else #define QTTM_NONATIVESCANCODES diff --git a/levelonecommands.cpp b/levelonecommands.cpp index d867b2c..2eaeb53 100644 --- a/levelonecommands.cpp +++ b/levelonecommands.cpp @@ -106,6 +106,8 @@ ToggleMosaicBitCommand::ToggleMosaicBitCommand(TeletextDocument *teletextDocumen m_oldCharacter = teletextDocument->currentSubPage()->character(m_row, m_column); if (bitToToggle == 0x20 || bitToToggle == 0x7f) m_newCharacter = bitToToggle; + else if (bitToToggle == 0x66) + m_newCharacter = (m_row & 1) ? 0x66 : 0x39; else m_newCharacter = m_oldCharacter ^ bitToToggle; diff --git a/mainwidget.cpp b/mainwidget.cpp index cd56e35..14f17ab 100644 --- a/mainwidget.cpp +++ b/mainwidget.cpp @@ -259,7 +259,7 @@ void TeletextWidget::keyPressEvent(QKeyEvent *event) mappedKeyPress = 0x7f; if (m_pageDecode.level1MosaicAttribute(m_teletextDocument->cursorRow(), m_teletextDocument->cursorColumn()) && (mappedKeyPress < 0x40 || mappedKeyPress > 0x5f)) { // We're on a mosaic and a blast-through character was NOT pressed - if (event->key() >= Qt::Key_1 && event->key() <= Qt::Key_9 && event->modifiers() & Qt::KeypadModifier) { + if (event->key() >= Qt::Key_0 && event->key() <= Qt::Key_9 && event->modifiers() & Qt::KeypadModifier) { switch (event->key()) { case Qt::Key_7: toggleCharacterBit(0x01); // Top left @@ -288,6 +288,9 @@ void TeletextWidget::keyPressEvent(QKeyEvent *event) case Qt::Key_3: toggleCharacterBit(0x20); // Clear all break; + case Qt::Key_0: + toggleCharacterBit(0x66); // Dither + break; } return; } @@ -328,6 +331,9 @@ void TeletextWidget::keyPressEvent(QKeyEvent *event) case mosaicNativeScanCodes[8]: toggleCharacterBit(0x20); // Clear all break; + case mosaicNativeScanCodes[9]: + toggleCharacterBit(0x66); // Dither + break; } return; } else