Add dither to mosaic manipulating keypresses

This commit is contained in:
G.K.MacGregor
2022-11-06 18:42:14 +00:00
parent 06e0b401ca
commit 213eace512
3 changed files with 14 additions and 6 deletions

View File

@@ -528,15 +528,15 @@ static const QMap<QChar, char> keymapping[24] = {
// Native scan codes to toggle mosaic bits - different platforms have different scan codes! // 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, // 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 #ifdef Q_OS_UNIX
static constexpr quint32 mosaicNativeScanCodes[9] = { static constexpr quint32 mosaicNativeScanCodes[10] = {
0x18, 0x19, 0x26, 0x27, 0x34, 0x35, 0x1b, 0x29, 0x36 0x18, 0x19, 0x26, 0x27, 0x34, 0x35, 0x1b, 0x29, 0x36, 0x28
}; };
#elif defined(Q_OS_WIN) #elif defined(Q_OS_WIN)
static constexpr quint32 mosaicNativeScanCodes[9] = { static constexpr quint32 mosaicNativeScanCodes[10] = {
0x10, 0x11, 0x1e, 0x1f, 0x2c, 0x2d, 0x13, 0x21, 0x2e 0x10, 0x11, 0x1e, 0x1f, 0x2c, 0x2d, 0x13, 0x21, 0x2e, 0x20
}; };
#else #else
#define QTTM_NONATIVESCANCODES #define QTTM_NONATIVESCANCODES

View File

@@ -106,6 +106,8 @@ ToggleMosaicBitCommand::ToggleMosaicBitCommand(TeletextDocument *teletextDocumen
m_oldCharacter = teletextDocument->currentSubPage()->character(m_row, m_column); m_oldCharacter = teletextDocument->currentSubPage()->character(m_row, m_column);
if (bitToToggle == 0x20 || bitToToggle == 0x7f) if (bitToToggle == 0x20 || bitToToggle == 0x7f)
m_newCharacter = bitToToggle; m_newCharacter = bitToToggle;
else if (bitToToggle == 0x66)
m_newCharacter = (m_row & 1) ? 0x66 : 0x39;
else else
m_newCharacter = m_oldCharacter ^ bitToToggle; m_newCharacter = m_oldCharacter ^ bitToToggle;

View File

@@ -259,7 +259,7 @@ void TeletextWidget::keyPressEvent(QKeyEvent *event)
mappedKeyPress = 0x7f; mappedKeyPress = 0x7f;
if (m_pageDecode.level1MosaicAttribute(m_teletextDocument->cursorRow(), m_teletextDocument->cursorColumn()) && (mappedKeyPress < 0x40 || mappedKeyPress > 0x5f)) { 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 // 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()) { switch (event->key()) {
case Qt::Key_7: case Qt::Key_7:
toggleCharacterBit(0x01); // Top left toggleCharacterBit(0x01); // Top left
@@ -288,6 +288,9 @@ void TeletextWidget::keyPressEvent(QKeyEvent *event)
case Qt::Key_3: case Qt::Key_3:
toggleCharacterBit(0x20); // Clear all toggleCharacterBit(0x20); // Clear all
break; break;
case Qt::Key_0:
toggleCharacterBit(0x66); // Dither
break;
} }
return; return;
} }
@@ -328,6 +331,9 @@ void TeletextWidget::keyPressEvent(QKeyEvent *event)
case mosaicNativeScanCodes[8]: case mosaicNativeScanCodes[8]:
toggleCharacterBit(0x20); // Clear all toggleCharacterBit(0x20); // Clear all
break; break;
case mosaicNativeScanCodes[9]:
toggleCharacterBit(0x66); // Dither
break;
} }
return; return;
} else } else