Add X/27/4 and X/27/5 compositional link editing

This commit is contained in:
G.K.MacGregor
2020-09-19 19:34:41 +01:00
parent 4cd080ab0e
commit 0a24aff1fa
6 changed files with 330 additions and 23 deletions

View File

@@ -207,10 +207,26 @@ void TeletextDocument::setPageNumber(QString newPageNumberString)
// The LineEdit should check if a valid hex number was entered, but just in case...
bool newPageNumberOk;
int newPageNumberRead = newPageNumberString.toInt(&newPageNumberOk, 16);
if (newPageNumberOk && newPageNumberRead >= 0x100 && newPageNumberRead <= 0x8fe) {
m_pageNumber = newPageNumberRead;
for (auto &subPage : m_subPages)
subPage->setPageNumber(newPageNumberRead);
if ((!newPageNumberOk) || newPageNumberRead < 0x100 || newPageNumberRead > 0x8fe)
return;
// If the magazine number was changed, we'll need to update the relative magazine numbers in X/27
int oldMagazine = (m_pageNumber & 0xf00);
int newMagazine = (newPageNumberRead & 0xf00);
// Fix magazine 0 to 8
if (oldMagazine == 0x800)
oldMagazine = 0x000;
if (newMagazine == 0x800)
newMagazine = 0x000;
int magazineFlip = oldMagazine ^ newMagazine;
m_pageNumber = newPageNumberRead;
for (auto &subPage : m_subPages) {
subPage->setPageNumber(newPageNumberRead);
if (magazineFlip)
for (int i=0; i<8; i++)
subPage->setComposeLinkPageNumber(i, subPage->composeLinkPageNumber(i) ^ magazineFlip);
}
}
@@ -224,8 +240,10 @@ void TeletextDocument::setFastTextLink(int linkNumber, QString newPageNumberStri
// The LineEdit should check if a valid hex number was entered, but just in case...
bool newPageNumberOk;
int newPageNumberRead = newPageNumberString.toInt(&newPageNumberOk, 16);
if (newPageNumberOk && newPageNumberRead >= 0x100 && newPageNumberRead <= 0x8ff)
m_fastTextLink[linkNumber] = newPageNumberRead;
if ((!newPageNumberOk) || newPageNumberRead < 0x100 || newPageNumberRead > 0x8ff)
return;
m_fastTextLink[linkNumber] = newPageNumberRead;
}
void TeletextDocument::cursorUp()