From 0f864c7787addcbd63969f64410f854970783007 Mon Sep 17 00:00:00 2001 From: "G.K.MacGregor" Date: Wed, 16 Sep 2020 11:15:46 +0100 Subject: [PATCH] Rename TeletextPage class to LevelOnePage --- document.cpp | 16 +++---- document.h | 4 +- levelonepage.cpp | 60 ++++++++++++------------ levelonepage.h | 4 +- mainwidget.cpp | 34 +++++++------- mainwidget.h | 2 +- pageoptionsdockwidget.cpp | 4 +- render.cpp | 96 +++++++++++++++++++-------------------- render.h | 8 ++-- 9 files changed, 114 insertions(+), 114 deletions(-) diff --git a/document.cpp b/document.cpp index 3c63517..d00fdec 100644 --- a/document.cpp +++ b/document.cpp @@ -32,7 +32,7 @@ TeletextDocument::TeletextDocument() for (int i=0; i<6; i++) m_fastTextLink[i] = 0x8ff; m_empty = true; - m_subPages.push_back(new TeletextPage); + m_subPages.push_back(new LevelOnePage); m_currentSubPageIndex = 0; m_undoStack = new QUndoStack(this); m_cursorRow = 1; @@ -51,9 +51,9 @@ void TeletextDocument::loadDocument(QFile *inFile) bool firstSubPageFound = false; int cycleCommandsFound = 0; int mostRecentCycleValue = -1; - TeletextPage::CycleTypeEnum mostRecentCycleType; + LevelOnePage::CycleTypeEnum mostRecentCycleType; - TeletextPage* loadingPage = m_subPages[0]; + LevelOnePage* loadingPage = m_subPages[0]; for (;;) { inLine = inFile->readLine(160).trimmed(); @@ -69,7 +69,7 @@ void TeletextDocument::loadDocument(QFile *inFile) // When second and subsequent PN commands are found, firstSubPageFound==true at this point // This assumes that PN is the first command of a new subpage... if (firstSubPageFound) { - m_subPages.push_back(new TeletextPage); + m_subPages.push_back(new LevelOnePage); loadingPage = m_subPages.back(); } m_pageNumber = pageNumberRead; @@ -100,7 +100,7 @@ void TeletextDocument::loadDocument(QFile *inFile) // House-keep CT command values, in case it's the only one within multiple subpages mostRecentCycleValue = cycleValueRead; loadingPage->setCycleValue(cycleValueRead); - mostRecentCycleType = inLine.endsWith("C") ? TeletextPage::CTcycles : TeletextPage::CTseconds; + mostRecentCycleType = inLine.endsWith("C") ? LevelOnePage::CTcycles : LevelOnePage::CTseconds; loadingPage->setCycleType(mostRecentCycleType); } } @@ -181,12 +181,12 @@ void TeletextDocument::selectSubPagePrevious() void TeletextDocument::insertSubPage(int beforeSubPageIndex, bool copySubPage) { - TeletextPage *insertedSubPage; + LevelOnePage *insertedSubPage; if (copySubPage) - insertedSubPage = new TeletextPage(*m_subPages.at(beforeSubPageIndex)); + insertedSubPage = new LevelOnePage(*m_subPages.at(beforeSubPageIndex)); else - insertedSubPage = new TeletextPage; + insertedSubPage = new LevelOnePage; if (beforeSubPageIndex == m_subPages.size()) m_subPages.push_back(insertedSubPage); else diff --git a/document.h b/document.h index 130fd9e..0332522 100644 --- a/document.h +++ b/document.h @@ -40,7 +40,7 @@ public: void loadDocument(QFile *); void saveDocument(QTextStream *); int numberOfSubPages() const { return m_subPages.size(); } - TeletextPage* currentSubPage() const { return m_subPages[m_currentSubPageIndex]; } + LevelOnePage* currentSubPage() const { return m_subPages[m_currentSubPageIndex]; } int currentSubPageIndex() const { return m_currentSubPageIndex; } void selectSubPageIndex(int, bool=false); void selectSubPageNext(); @@ -75,7 +75,7 @@ private: bool m_empty; int m_pageNumber, m_currentSubPageIndex; int m_fastTextLink[6]; - std::vector m_subPages; + std::vector m_subPages; QUndoStack *m_undoStack; int m_cursorRow, m_cursorColumn; }; diff --git a/levelonepage.cpp b/levelonepage.cpp index 7dd3327..de83480 100644 --- a/levelonepage.cpp +++ b/levelonepage.cpp @@ -25,7 +25,7 @@ #include "levelonepage.h" -TeletextPage::TeletextPage() +LevelOnePage::LevelOnePage() { m_paddingX26Triplet.setAddress(41); m_paddingX26Triplet.setMode(0x1e); @@ -35,7 +35,7 @@ TeletextPage::TeletextPage() } // So far we only call clearPage() once, within the constructor -void TeletextPage::clearPage() +void LevelOnePage::clearPage() { for (int r=0; r<25; r++) for (int c=0; c<40; c++) @@ -61,7 +61,7 @@ void TeletextPage::clearPage() // If clearPage() is called outside constructor, we need to implement localEnhance.clear(); } -QByteArray TeletextPage::packet(int packetNumber, int designationCode) +QByteArray LevelOnePage::packet(int packetNumber, int designationCode) { QByteArray result(40, 0x00); @@ -132,7 +132,7 @@ QByteArray TeletextPage::packet(int packetNumber, int designationCode) return PageBase::packet(packetNumber, designationCode); } -bool TeletextPage::setPacket(int packetNumber, QByteArray packetContents) +bool LevelOnePage::setPacket(int packetNumber, QByteArray packetContents) { if (packetNumber <= 24) { for (int c=0; c<40; c++) @@ -143,7 +143,7 @@ bool TeletextPage::setPacket(int packetNumber, QByteArray packetContents) return PageBase::setPacket(packetNumber, packetContents); } -bool TeletextPage::setPacket(int packetNumber, int designationCode, QByteArray packetContents) +bool LevelOnePage::setPacket(int packetNumber, int designationCode, QByteArray packetContents) { if (packetNumber == 26) { // Preallocate entries in the localEnhance list to hold our incoming triplets. @@ -201,7 +201,7 @@ bool TeletextPage::setPacket(int packetNumber, int designationCode, QByteArray p return PageBase::setPacket(packetNumber, designationCode, packetContents); } -bool TeletextPage::packetNeeded(int packetNumber, int designationCode) const +bool LevelOnePage::packetNeeded(int packetNumber, int designationCode) const { if (packetNumber <= 24) { for (int c=0; c<40; c++) @@ -234,7 +234,7 @@ bool TeletextPage::packetNeeded(int packetNumber, int designationCode) const return PageBase::packetNeeded(packetNumber, designationCode); } -void TeletextPage::loadPagePacket(QByteArray &inLine) +void LevelOnePage::loadPagePacket(QByteArray &inLine) { bool lineNumberOk; int lineNumber, secondCommaPosition; @@ -271,7 +271,7 @@ void TeletextPage::loadPagePacket(QByteArray &inLine) } } -void TeletextPage::savePage(QTextStream *outStream, int pageNumber, int subPageNumber) +void LevelOnePage::savePage(QTextStream *outStream, int pageNumber, int subPageNumber) { auto writePacketsWithDesignationCodes=[&](int packetNumber) { @@ -313,7 +313,7 @@ void TeletextPage::savePage(QTextStream *outStream, int pageNumber, int subPageN } } -int TeletextPage::controlBitsToPS() const +int LevelOnePage::controlBitsToPS() const { //TODO map page language for regions other than 0 int pageStatus = 0x8000 | (m_controlBits[0] << 14) | ((m_defaultNOS & 1) << 9) | ((m_defaultNOS & 2) << 7) | ((m_defaultNOS & 4) << 5); @@ -322,7 +322,7 @@ int TeletextPage::controlBitsToPS() const return pageStatus; } -QString TeletextPage::exportURLHash(QString pageHash) +QString LevelOnePage::exportURLHash(QString pageHash) { int hashDigits[1167]={0}; int totalBits, charBit; @@ -378,28 +378,28 @@ QString TeletextPage::exportURLHash(QString pageHash) return pageHash; } -/* void TeletextPage::setSubPageNumber(int newSubPageNumber) { m_subPageNumber = newSubPageNumber; } */ -void TeletextPage::setControlBit(int bitNumber, bool active) { m_controlBits[bitNumber] = active; } -void TeletextPage::setCycleValue(int newValue) { m_cycleValue = newValue; }; -void TeletextPage::setCycleType(CycleTypeEnum newType) { m_cycleType = newType; } -void TeletextPage::setDefaultCharSet(int newDefaultCharSet) { m_defaultCharSet = newDefaultCharSet; } -void TeletextPage::setDefaultNOS(int newDefaultNOS) { m_defaultNOS = newDefaultNOS; } +/* void LevelOnePage::setSubPageNumber(int newSubPageNumber) { m_subPageNumber = newSubPageNumber; } */ +void LevelOnePage::setControlBit(int bitNumber, bool active) { m_controlBits[bitNumber] = active; } +void LevelOnePage::setCycleValue(int newValue) { m_cycleValue = newValue; }; +void LevelOnePage::setCycleType(CycleTypeEnum newType) { m_cycleType = newType; } +void LevelOnePage::setDefaultCharSet(int newDefaultCharSet) { m_defaultCharSet = newDefaultCharSet; } +void LevelOnePage::setDefaultNOS(int newDefaultNOS) { m_defaultNOS = newDefaultNOS; } -void TeletextPage::setSecondCharSet(int newSecondCharSet) +void LevelOnePage::setSecondCharSet(int newSecondCharSet) { m_secondCharSet = newSecondCharSet; if (m_secondCharSet == 0xf) m_secondNOS = 0x7; } -void TeletextPage::setSecondNOS(int newSecondNOS) { m_secondNOS = newSecondNOS; } -void TeletextPage::setCharacter(int row, int column, unsigned char newCharacter) { m_level1Page[row][column] = newCharacter; } -void TeletextPage::setDefaultScreenColour(int newDefaultScreenColour) { m_defaultScreenColour = newDefaultScreenColour; } -void TeletextPage::setDefaultRowColour(int newDefaultRowColour) { m_defaultRowColour = newDefaultRowColour; } -void TeletextPage::setColourTableRemap(int newColourTableRemap) { m_colourTableRemap = newColourTableRemap; } -void TeletextPage::setBlackBackgroundSubst(bool newBlackBackgroundSubst) { m_blackBackgroundSubst = newBlackBackgroundSubst; } +void LevelOnePage::setSecondNOS(int newSecondNOS) { m_secondNOS = newSecondNOS; } +void LevelOnePage::setCharacter(int row, int column, unsigned char newCharacter) { m_level1Page[row][column] = newCharacter; } +void LevelOnePage::setDefaultScreenColour(int newDefaultScreenColour) { m_defaultScreenColour = newDefaultScreenColour; } +void LevelOnePage::setDefaultRowColour(int newDefaultRowColour) { m_defaultRowColour = newDefaultRowColour; } +void LevelOnePage::setColourTableRemap(int newColourTableRemap) { m_colourTableRemap = newColourTableRemap; } +void LevelOnePage::setBlackBackgroundSubst(bool newBlackBackgroundSubst) { m_blackBackgroundSubst = newBlackBackgroundSubst; } -int TeletextPage::CLUT(int index, int renderLevel) const +int LevelOnePage::CLUT(int index, int renderLevel) const { if (renderLevel == 2) return index>=16 ? m_CLUT[index] : defaultCLUT[index]; @@ -407,13 +407,13 @@ int TeletextPage::CLUT(int index, int renderLevel) const return renderLevel==3 ? m_CLUT[index] : defaultCLUT[index]; } -void TeletextPage::setCLUT(int index, int newColour) { m_CLUT[index] = newColour; } -void TeletextPage::setLeftSidePanelDisplayed(bool newLeftSidePanelDisplayed) { m_leftSidePanelDisplayed = newLeftSidePanelDisplayed; } -void TeletextPage::setRightSidePanelDisplayed(bool newRightSidePanelDisplayed) { m_rightSidePanelDisplayed = newRightSidePanelDisplayed; } -void TeletextPage::setSidePanelColumns(int newSidePanelColumns) { m_sidePanelColumns = newSidePanelColumns; } -void TeletextPage::setSidePanelStatusL25(bool newSidePanelStatusL25) { m_sidePanelStatusL25 = newSidePanelStatusL25; } +void LevelOnePage::setCLUT(int index, int newColour) { m_CLUT[index] = newColour; } +void LevelOnePage::setLeftSidePanelDisplayed(bool newLeftSidePanelDisplayed) { m_leftSidePanelDisplayed = newLeftSidePanelDisplayed; } +void LevelOnePage::setRightSidePanelDisplayed(bool newRightSidePanelDisplayed) { m_rightSidePanelDisplayed = newRightSidePanelDisplayed; } +void LevelOnePage::setSidePanelColumns(int newSidePanelColumns) { m_sidePanelColumns = newSidePanelColumns; } +void LevelOnePage::setSidePanelStatusL25(bool newSidePanelStatusL25) { m_sidePanelStatusL25 = newSidePanelStatusL25; } -QString TeletextPage::colourHash(int whichCLUT) +QString LevelOnePage::colourHash(int whichCLUT) { QString resultHash; diff --git a/levelonepage.h b/levelonepage.h index 1191e9d..3d2528e 100644 --- a/levelonepage.h +++ b/levelonepage.h @@ -33,14 +33,14 @@ QColor CLUTtoQColor(int myColour); // If we inherit from QObject then we can't copy construct, so "make a new subpage that's a copy of this one" wouldn't work -class TeletextPage : public PageBase //: public QObject +class LevelOnePage : public PageBase //: public QObject { //Q_OBJECT public: enum CycleTypeEnum { CTcycles, CTseconds }; - TeletextPage(); + LevelOnePage(); QByteArray packet(int, int=0); bool setPacket(int, QByteArray); diff --git a/mainwidget.cpp b/mainwidget.cpp index 68cc4ba..1a722bf 100644 --- a/mainwidget.cpp +++ b/mainwidget.cpp @@ -39,8 +39,8 @@ TeletextWidget::TeletextWidget(QFrame *parent) : QFrame(parent) this->resize(QSize(480, 250)); this->setAttribute(Qt::WA_NoSystemBackground); m_teletextDocument = new TeletextDocument(); - m_teletextPage = m_teletextDocument->currentSubPage(); - m_pageRender.setTeletextPage(m_teletextPage); + m_levelOnePage = m_teletextDocument->currentSubPage(); + m_pageRender.setTeletextPage(m_levelOnePage); m_insertMode = false; m_grid = false; setFocusPolicy(Qt::StrongFocus); @@ -61,8 +61,8 @@ TeletextWidget::~TeletextWidget() void TeletextWidget::subPageSelected() { - m_teletextPage = m_teletextDocument->currentSubPage(); - m_pageRender.setTeletextPage(m_teletextPage); + m_levelOnePage = m_teletextDocument->currentSubPage(); + m_pageRender.setTeletextPage(m_levelOnePage); refreshPage(); } @@ -140,7 +140,7 @@ void TeletextWidget::toggleGrid(bool gridOn) void TeletextWidget::setControlBit(int bitNumber, bool active) { - m_teletextPage->setControlBit(bitNumber, active); + m_levelOnePage->setControlBit(bitNumber, active); if (bitNumber == 1 || bitNumber == 2) { m_pageRender.decodePage(); m_pageRender.renderPage(); @@ -149,56 +149,56 @@ void TeletextWidget::setControlBit(int bitNumber, bool active) void TeletextWidget::setDefaultCharSet(int newDefaultCharSet) { - m_teletextPage->setDefaultCharSet(newDefaultCharSet); + m_levelOnePage->setDefaultCharSet(newDefaultCharSet); } void TeletextWidget::setDefaultNOS(int newDefaultNOS) { - m_teletextPage->setDefaultNOS(newDefaultNOS); + m_levelOnePage->setDefaultNOS(newDefaultNOS); } void TeletextWidget::setDefaultScreenColour(int newColour) { - m_teletextPage->setDefaultScreenColour(newColour); + m_levelOnePage->setDefaultScreenColour(newColour); m_pageRender.decodePage(); m_pageRender.renderPage(); } void TeletextWidget::setDefaultRowColour(int newColour) { - m_teletextPage->setDefaultRowColour(newColour); + m_levelOnePage->setDefaultRowColour(newColour); m_pageRender.decodePage(); m_pageRender.renderPage(); } void TeletextWidget::setColourTableRemap(int newMap) { - m_teletextPage->setColourTableRemap(newMap); + m_levelOnePage->setColourTableRemap(newMap); m_pageRender.decodePage(); m_pageRender.renderPage(); } void TeletextWidget::setBlackBackgroundSubst(bool substOn) { - m_teletextPage->setBlackBackgroundSubst(substOn); + m_levelOnePage->setBlackBackgroundSubst(substOn); m_pageRender.decodePage(); m_pageRender.renderPage(); } void TeletextWidget::setSidePanelWidths(int newLeftSidePanelColumns, int newRightSidePanelColumns) { - m_teletextPage->setLeftSidePanelDisplayed(newLeftSidePanelColumns != 0); - m_teletextPage->setRightSidePanelDisplayed(newRightSidePanelColumns != 0); + m_levelOnePage->setLeftSidePanelDisplayed(newLeftSidePanelColumns != 0); + m_levelOnePage->setRightSidePanelDisplayed(newRightSidePanelColumns != 0); if (newLeftSidePanelColumns) - m_teletextPage->setSidePanelColumns((newLeftSidePanelColumns == 16) ? 0 : newLeftSidePanelColumns); + m_levelOnePage->setSidePanelColumns((newLeftSidePanelColumns == 16) ? 0 : newLeftSidePanelColumns); else - m_teletextPage->setSidePanelColumns((newRightSidePanelColumns == 0) ? 0 : 16-newRightSidePanelColumns); + m_levelOnePage->setSidePanelColumns((newRightSidePanelColumns == 0) ? 0 : 16-newRightSidePanelColumns); m_pageRender.updateSidePanels(); } void TeletextWidget::setSidePanelAtL35Only(bool newSidePanelAtL35Only) { - m_teletextPage->setSidePanelStatusL25(!newSidePanelAtL35Only); + m_levelOnePage->setSidePanelStatusL25(!newSidePanelAtL35Only); m_pageRender.updateSidePanels(); } @@ -214,7 +214,7 @@ void TeletextWidget::keyPressEvent(QKeyEvent *event) char keyPressed = *qPrintable(event->text()); // if (attributes[cursorRow][cursorColumn].mosaics && (keyPressed < 0x40 || keyPressed > 0x5f) && (((keyPressed >= '1' && keyPressed <= '9') && (event->modifiers() & Qt::KeypadModifier)) || (keyPressed >= 'a' && keyPressed <= 'z'))) { if (m_pageRender.level1MosaicAttribute(m_teletextDocument->cursorRow(), m_teletextDocument->cursorColumn()) && (keyPressed < 0x40 || keyPressed > 0x5f) && (((keyPressed >= '1' && keyPressed <= '9') && (event->modifiers() & Qt::KeypadModifier)) || (keyPressed >= 'a' && keyPressed <= 'z'))) { - if (!(m_teletextPage->character(m_teletextDocument->cursorRow(), m_teletextDocument->cursorColumn()) & 0x20)) + if (!(m_levelOnePage->character(m_teletextDocument->cursorRow(), m_teletextDocument->cursorColumn()) & 0x20)) setCharacter(0x20); switch (event->key()) { case Qt::Key_Q: diff --git a/mainwidget.h b/mainwidget.h index 57d330b..48dba8d 100644 --- a/mainwidget.h +++ b/mainwidget.h @@ -81,7 +81,7 @@ protected: private: TeletextDocument* m_teletextDocument; - TeletextPage* m_teletextPage; + LevelOnePage* m_levelOnePage; bool m_insertMode, m_grid; QBasicTimer m_flashTimer; int m_flashTiming, m_flashPhase; diff --git a/pageoptionsdockwidget.cpp b/pageoptionsdockwidget.cpp index 2b58261..5f139d8 100644 --- a/pageoptionsdockwidget.cpp +++ b/pageoptionsdockwidget.cpp @@ -91,7 +91,7 @@ PageOptionsDockWidget::PageOptionsDockWidget(TeletextWidget *parent): QDockWidge m_cycleTypeCombo->addItem("cycles"); m_cycleTypeCombo->addItem("seconds"); pageCycleLayout->addWidget(m_cycleTypeCombo); - connect(m_cycleTypeCombo, QOverload::of(&QComboBox::currentIndexChanged), [=](int index) { m_parentMainWidget->document()->currentSubPage()->setCycleType(index == 0 ? TeletextPage::CTcycles : TeletextPage::CTseconds); } ); + connect(m_cycleTypeCombo, QOverload::of(&QComboBox::currentIndexChanged), [=](int index) { m_parentMainWidget->document()->currentSubPage()->setCycleType(index == 0 ? LevelOnePage::CTcycles : LevelOnePage::CTseconds); } ); subPageOptionsLayout->addLayout(pageCycleLayout); @@ -169,7 +169,7 @@ void PageOptionsDockWidget::updateWidgets() m_cycleValueSpinBox->setValue(m_parentMainWidget->document()->currentSubPage()->cycleValue()); m_cycleValueSpinBox->blockSignals(false); m_cycleTypeCombo->blockSignals(true); - m_cycleTypeCombo->setCurrentIndex(m_parentMainWidget->document()->currentSubPage()->cycleType() == TeletextPage::CTseconds); + m_cycleTypeCombo->setCurrentIndex(m_parentMainWidget->document()->currentSubPage()->cycleType() == LevelOnePage::CTseconds); m_cycleTypeCombo->blockSignals(false); for (int i=0; i<=7; i++) { m_controlBitsAct[i]->blockSignals(true); diff --git a/render.cpp b/render.cpp index 9291ed0..654b531 100644 --- a/render.cpp +++ b/render.cpp @@ -60,9 +60,9 @@ TeletextPageRender::~TeletextPageRender() delete m_fontBitmap; } -void TeletextPageRender::setTeletextPage(TeletextPage *newCurrentPage) +void TeletextPageRender::setTeletextPage(LevelOnePage *newCurrentPage) { - m_teletextPage = newCurrentPage; + m_levelOnePage = newCurrentPage; m_level1Layer.setTeletextPage(newCurrentPage); updateSidePanels(); } @@ -103,13 +103,13 @@ void TeletextPageRender::updateSidePanels() int oldLeftSidePanelColumns = m_leftSidePanelColumns; int oldRightSidePanelColumns = m_rightSidePanelColumns; - if (m_renderLevel >= (3-m_teletextPage->sidePanelStatusL25()) && m_teletextPage->leftSidePanelDisplayed()) - m_leftSidePanelColumns = (m_teletextPage->sidePanelColumns() == 0) ? 16 : m_teletextPage->sidePanelColumns(); + if (m_renderLevel >= (3-m_levelOnePage->sidePanelStatusL25()) && m_levelOnePage->leftSidePanelDisplayed()) + m_leftSidePanelColumns = (m_levelOnePage->sidePanelColumns() == 0) ? 16 : m_levelOnePage->sidePanelColumns(); else m_leftSidePanelColumns = 0; - if (m_renderLevel >= (3-m_teletextPage->sidePanelStatusL25()) && m_teletextPage->rightSidePanelDisplayed()) - m_rightSidePanelColumns = 16-m_teletextPage->sidePanelColumns(); + if (m_renderLevel >= (3-m_levelOnePage->sidePanelStatusL25()) && m_levelOnePage->rightSidePanelDisplayed()) + m_rightSidePanelColumns = 16-m_levelOnePage->sidePanelColumns(); else m_rightSidePanelColumns = 0; @@ -128,7 +128,7 @@ void TeletextPageRender::buildEnhanceMap(TextLayer *enhanceLayer, int tripletNum int originModifierC=0; do { - x26Triplet = &m_teletextPage->localEnhance.at(tripletNumber); + x26Triplet = &m_levelOnePage->localEnhance.at(tripletNumber); if (x26Triplet->isRowTriplet()) // Row address group switch (x26Triplet->mode()) { @@ -153,7 +153,7 @@ void TeletextPageRender::buildEnhanceMap(TextLayer *enhanceLayer, int tripletNum } break; case 0x10: // Origin modifier - if (m_renderLevel >= 2 && (tripletNumber+1) < m_teletextPage->localEnhance.size() && m_teletextPage->localEnhance.at(tripletNumber+1).mode() >= 0x11 && m_teletextPage->localEnhance.at(tripletNumber+1).mode() <= 0x13 && x26Triplet->address() >= 40 && x26Triplet->data() < 72) { + if (m_renderLevel >= 2 && (tripletNumber+1) < m_levelOnePage->localEnhance.size() && m_levelOnePage->localEnhance.at(tripletNumber+1).mode() >= 0x11 && m_levelOnePage->localEnhance.at(tripletNumber+1).mode() <= 0x13 && x26Triplet->address() >= 40 && x26Triplet->data() < 72) { originModifierR = x26Triplet->address()-40; originModifierC = x26Triplet->data(); } @@ -168,21 +168,21 @@ void TeletextPageRender::buildEnhanceMap(TextLayer *enhanceLayer, int tripletNum break; int tripletPointer = ((x26Triplet->data() >> 4) | ((x26Triplet->address() & 1) << 3)) * 13 + (x26Triplet->data() & 0x0f); // Can't point to triplet beyond the end of the Local Enhancement Data - if ((tripletPointer+1) >= m_teletextPage->localEnhance.size()) + if ((tripletPointer+1) >= m_levelOnePage->localEnhance.size()) break; // Check if we're pointing to an actual Object Definition of the same type - if ((x26Triplet->mode() | 0x04) != m_teletextPage->localEnhance.at(tripletPointer).mode()) + if ((x26Triplet->mode() | 0x04) != m_levelOnePage->localEnhance.at(tripletPointer).mode()) break; // The Object Definition can't declare it's at triplet 13-15; only 12 triplets per packet - if ((m_teletextPage->localEnhance.at(tripletPointer).data() & 0x0f) > 12) + if ((m_levelOnePage->localEnhance.at(tripletPointer).data() & 0x0f) > 12) break; // Check if the Object Definition triplet is where it declares it is - if ((((m_teletextPage->localEnhance.at(tripletPointer).data() >> 4) | ((m_teletextPage->localEnhance.at(tripletPointer).address() & 1) << 3)) * 13 + (m_teletextPage->localEnhance.at(tripletPointer).data() & 0x0f)) != tripletPointer) + if ((((m_levelOnePage->localEnhance.at(tripletPointer).data() >> 4) | ((m_levelOnePage->localEnhance.at(tripletPointer).address() & 1) << 3)) * 13 + (m_levelOnePage->localEnhance.at(tripletPointer).data() & 0x0f)) != tripletPointer) break; // Is the object required at the current presentation Level? - if (m_renderLevel == 2 && (m_teletextPage->localEnhance.at(tripletPointer).address() & 0x08) == 0x00) + if (m_renderLevel == 2 && (m_levelOnePage->localEnhance.at(tripletPointer).address() & 0x08) == 0x00) break; - if (m_renderLevel == 3 && (m_teletextPage->localEnhance.at(tripletPointer).address() & 0x10) == 0x00) + if (m_renderLevel == 3 && (m_levelOnePage->localEnhance.at(tripletPointer).address() & 0x10) == 0x00) break; EnhanceLayer *newLayer = new EnhanceLayer; m_textLayer.push_back(newLayer); @@ -229,7 +229,7 @@ void TeletextPageRender::buildEnhanceMap(TextLayer *enhanceLayer, int tripletNum enhanceLayer->enhanceMap.insert((activePosition.row() << 8) | activePosition.column(), ((x26Triplet->mode() | 0x20) << 8) | x26Triplet->data()); } tripletNumber++; - } while (!terminatorFound && tripletNumber < m_teletextPage->localEnhance.size()); + } while (!terminatorFound && tripletNumber < m_levelOnePage->localEnhance.size()); } void TeletextPageRender::decodePage() @@ -249,14 +249,14 @@ void TeletextPageRender::decodePage() m_textLayer.pop_back(); } - renderedFullScreenColour = (m_renderLevel >= 2) ? m_teletextPage->defaultScreenColour() : 0; - downwardsFullRowColour = (m_renderLevel >= 2) ? m_teletextPage->defaultRowColour() : 0; + renderedFullScreenColour = (m_renderLevel >= 2) ? m_levelOnePage->defaultScreenColour() : 0; + downwardsFullRowColour = (m_renderLevel >= 2) ? m_levelOnePage->defaultRowColour() : 0; setFullScreenColour(renderedFullScreenColour); for (int r=0; r<25; r++) setFullRowColour(r ,downwardsFullRowColour); m_textLayer[1]->enhanceMap.clear(); - if (m_renderLevel == 0 || m_teletextPage->localEnhance.empty()) + if (m_renderLevel == 0 || m_levelOnePage->localEnhance.empty()) return; m_textLayer[1]->setFullScreenColour(-1); @@ -321,14 +321,14 @@ void TeletextPageRender::renderPage(int r) return; int charWidth = resultAttributes.display.doubleWidth ? 24 : 12; int charHeight = resultAttributes.display.doubleHeight ? 20 : 10; - bool transparentBackground = (m_teletextPage->controlBit(1) || m_teletextPage->controlBit(2) || m_mix) && !resultAttributes.display.boxingWindow; + bool transparentBackground = (m_levelOnePage->controlBit(1) || m_levelOnePage->controlBit(2) || m_mix) && !resultAttributes.display.boxingWindow; // bool transparentForeground = false; if (transparentBackground) { pixmapPainter.setCompositionMode(QPainter::CompositionMode_Clear); pixmapPainter.eraseRect(c*12, r*10, charWidth, charHeight); pixmapPainter.setCompositionMode(QPainter::CompositionMode_SourceOver); } - if ((m_teletextPage->controlBit(1) || m_teletextPage->controlBit(2)) && !resultAttributes.display.boxingWindow) { + if ((m_levelOnePage->controlBit(1) || m_levelOnePage->controlBit(2)) && !resultAttributes.display.boxingWindow) { // Outside a boxed area resultCharacter = { 0x20, 0, 0 }; underlined = false; @@ -378,7 +378,7 @@ void TeletextPageRender::renderPage(int r) if (layerCharacter.code != 0x00) resultCharacter = layerCharacter; if (l == 0) { -// m_cell[r][c].level1Mosaic = (resultCharacter.set == 24 || resultCharacter.set == 25) && m_teletextPage->character(r, c) >= 0x20; +// m_cell[r][c].level1Mosaic = (resultCharacter.set == 24 || resultCharacter.set == 25) && m_levelOnePage->character(r, c) >= 0x20; m_cell[r][c].level1Mosaic = (resultCharacter.set == 24 || resultCharacter.set == 25); if (!m_cell[r][c].level1Mosaic) level1CharSet = resultCharacter.set; @@ -395,16 +395,16 @@ void TeletextPageRender::renderPage(int r) if (layerApplyAttributes.applyForeColour) { resultAttributes.foreColour = layerApplyAttributes.attribute.foreColour; if (l == 0 && m_renderLevel >= 2) - resultAttributes.foreColour |= m_foregroundRemap[m_teletextPage->colourTableRemap()]; + resultAttributes.foreColour |= m_foregroundRemap[m_levelOnePage->colourTableRemap()]; } if (layerApplyAttributes.applyBackColour) { resultAttributes.backColour = layerApplyAttributes.attribute.backColour; if (l == 0) { if (m_renderLevel >= 2) if (resultAttributes.backColour == 0x20) - resultAttributes.backColour = (c > 39 || m_teletextPage->blackBackgroundSubst()) ? m_fullRowColour[r] : m_backgroundRemap[m_teletextPage->colourTableRemap()]; + resultAttributes.backColour = (c > 39 || m_levelOnePage->blackBackgroundSubst()) ? m_fullRowColour[r] : m_backgroundRemap[m_levelOnePage->colourTableRemap()]; else - resultAttributes.backColour |= m_backgroundRemap[m_teletextPage->colourTableRemap()]; + resultAttributes.backColour |= m_backgroundRemap[m_levelOnePage->colourTableRemap()]; else if (resultAttributes.backColour == 0x20) resultAttributes.backColour = 0x00; @@ -474,19 +474,19 @@ void TeletextPageRender::renderPage(int r) m_cell[r][c].rightHalf = applyRightHalf; if (!resultAttributes.display.invert) { - foreQColour = CLUTtoQColor(m_teletextPage->CLUT(resultAttributes.foreColour, m_renderLevel)); - backQColour = CLUTtoQColor(m_teletextPage->CLUT(resultAttributes.backColour, m_renderLevel)); + foreQColour = CLUTtoQColor(m_levelOnePage->CLUT(resultAttributes.foreColour, m_renderLevel)); + backQColour = CLUTtoQColor(m_levelOnePage->CLUT(resultAttributes.backColour, m_renderLevel)); } else { - foreQColour = CLUTtoQColor(m_teletextPage->CLUT(resultAttributes.backColour, m_renderLevel)); - backQColour = CLUTtoQColor(m_teletextPage->CLUT(resultAttributes.foreColour, m_renderLevel)); + foreQColour = CLUTtoQColor(m_levelOnePage->CLUT(resultAttributes.backColour, m_renderLevel)); + backQColour = CLUTtoQColor(m_levelOnePage->CLUT(resultAttributes.foreColour, m_renderLevel)); } renderCharacter(); - if (m_showCodes && c < 40 && m_teletextPage->character(r, c)<0x20 && !m_level1Layer.isRowBottomHalf(r) && !m_cell[r][c].bottomHalf) { + if (m_showCodes && c < 40 && m_levelOnePage->character(r, c)<0x20 && !m_level1Layer.isRowBottomHalf(r) && !m_cell[r][c].bottomHalf) { pixmapPainter.setBackground(QBrush(QColor(0, 0, 0, 128))); pixmapPainter.setPen(QColor(255, 255, 255, 224)); - pixmapPainter.drawPixmap(c*12, r*10, 12, 10, *m_fontBitmap, (m_teletextPage->character(r, c)+32)*12, 250, 12, 10); + pixmapPainter.drawPixmap(c*12, r*10, 12, 10, *m_fontBitmap, (m_levelOnePage->character(r, c)+32)*12, 250, 12, 10); } if (resultAttributes.display.doubleHeight) @@ -557,11 +557,11 @@ void TeletextPageRender::renderPage(int r) underlined = false; } if (!resultAttributes.display.invert) { - foreQColour = CLUTtoQColor(m_teletextPage->CLUT(resultAttributes.foreColour, m_renderLevel)); - backQColour = CLUTtoQColor(m_teletextPage->CLUT(resultAttributes.backColour, m_renderLevel)); + foreQColour = CLUTtoQColor(m_levelOnePage->CLUT(resultAttributes.foreColour, m_renderLevel)); + backQColour = CLUTtoQColor(m_levelOnePage->CLUT(resultAttributes.backColour, m_renderLevel)); } else { - foreQColour = CLUTtoQColor(m_teletextPage->CLUT(resultAttributes.backColour, m_renderLevel)); - backQColour = CLUTtoQColor(m_teletextPage->CLUT(resultAttributes.foreColour, m_renderLevel)); + foreQColour = CLUTtoQColor(m_levelOnePage->CLUT(resultAttributes.backColour, m_renderLevel)); + backQColour = CLUTtoQColor(m_levelOnePage->CLUT(resultAttributes.foreColour, m_renderLevel)); } if (resultAttributes.flash.ratePhase == 0) { // 1Hz flash @@ -629,12 +629,12 @@ void TeletextPageRender::updateFlashRequired(int newFlashRequired) inline void TeletextPageRender::setFullScreenColour(int newColour) { - if (m_mix || m_teletextPage->controlBit(1) || m_teletextPage->controlBit(2)) { + if (m_mix || m_levelOnePage->controlBit(1) || m_levelOnePage->controlBit(2)) { m_finalFullScreenQColor = QColor(0, 0, 0, 0); emit fullScreenColourChanged(QColor(0, 0, 0, 0)); return; } - QColor newFullScreenQColor = CLUTtoQColor(m_teletextPage->CLUT(newColour, m_renderLevel)); + QColor newFullScreenQColor = CLUTtoQColor(m_levelOnePage->CLUT(newColour, m_renderLevel)); m_finalFullScreenColour = newColour; if (m_finalFullScreenQColor != newFullScreenQColor) { m_finalFullScreenQColor = newFullScreenQColor; @@ -644,12 +644,12 @@ inline void TeletextPageRender::setFullScreenColour(int newColour) inline void TeletextPageRender::setFullRowColour(int row, int newColour) { - if (m_mix || m_teletextPage->controlBit(1) || m_teletextPage->controlBit(2)) { + if (m_mix || m_levelOnePage->controlBit(1) || m_levelOnePage->controlBit(2)) { m_fullRowQColor[row] = QColor(0, 0, 0, 0); emit fullRowColourChanged(row, QColor(0, 0, 0, 0)); return; } - QColor newFullRowQColor = CLUTtoQColor(m_teletextPage->CLUT(newColour, m_renderLevel)); + QColor newFullRowQColor = CLUTtoQColor(m_levelOnePage->CLUT(newColour, m_renderLevel)); m_fullRowColour[row] = newColour; if (m_fullRowQColor[row] != newFullRowQColor) { m_fullRowQColor[row] = newFullRowQColor; @@ -657,7 +657,7 @@ inline void TeletextPageRender::setFullRowColour(int row, int newColour) } } -void TextLayer::setTeletextPage(TeletextPage *newCurrentPage) { m_teletextPage = newCurrentPage; } +void TextLayer::setTeletextPage(LevelOnePage *newCurrentPage) { m_levelOnePage = newCurrentPage; } void TextLayer::setFullScreenColour(int newColour) { m_layerFullScreenColour = newColour; } void TextLayer::setFullRowColour(int r, int newColour, bool newDownwards) @@ -835,7 +835,7 @@ void Level1Layer::updateRowCache(int r) bool doubleHeightAttrFound = false; for (int c=0; c<40; c++) { - unsigned char charCode = m_teletextPage->character(r, c); + unsigned char charCode = m_levelOnePage->character(r, c); // Set at spacing attributes switch (charCode) { case 0x0c: // Normal size @@ -916,11 +916,11 @@ textCharacter Level1Layer::character(int r, int c) updateRowCache(r); if (c > 39 || m_rowHeight[r] == RHbottomhalf) return { 0x20, 0 }; - result.code = m_teletextPage->character(r, c); - if (m_teletextPage->secondCharSet() != 0xf && m_attributeCache[c].escSwitch) - result.set = g0CharacterMap.value(((m_teletextPage->secondCharSet() << 3) | m_teletextPage->secondNOS()), 0); + result.code = m_levelOnePage->character(r, c); + if (m_levelOnePage->secondCharSet() != 0xf && m_attributeCache[c].escSwitch) + result.set = g0CharacterMap.value(((m_levelOnePage->secondCharSet() << 3) | m_levelOnePage->secondNOS()), 0); else - result.set = g0CharacterMap.value(((m_teletextPage->defaultCharSet() << 3) | m_teletextPage->defaultNOS()), 0); + result.set = g0CharacterMap.value(((m_levelOnePage->defaultCharSet() << 3) | m_levelOnePage->defaultNOS()), 0); if (result.code < 0x20) { result.code = m_attributeCache[c].held ? m_attributeCache[c].holdChar : 0x20; if (m_attributeCache[c].held && c > 0) @@ -965,7 +965,7 @@ void Level1Layer::attributes(int r, int c, applyAttributes *layerApplyAttributes return; if (c > 0) { // Set-after - characterCode = m_teletextPage->character(r, c-1); + characterCode = m_levelOnePage->character(r, c-1); switch (characterCode) { case 0x00 ... 0x07: // Alphanumeric + Foreground colour case 0x10 ... 0x17: // Mosaic + Foreground colour @@ -979,13 +979,13 @@ void Level1Layer::attributes(int r, int c, applyAttributes *layerApplyAttributes layerApplyAttributes->attribute.flash.ratePhase = 0; break; case 0x0a: // End box - if (m_teletextPage->character(r, c) == 0x0a) { + if (m_levelOnePage->character(r, c) == 0x0a) { layerApplyAttributes->applyBoxingOnly = true; layerApplyAttributes->attribute.display.boxingWindow = false; } break; case 0x0b: // Start box - if (m_teletextPage->character(r, c) == 0x0b) { + if (m_levelOnePage->character(r, c) == 0x0b) { layerApplyAttributes->applyBoxingOnly = true; layerApplyAttributes->attribute.display.boxingWindow = true; } @@ -1008,7 +1008,7 @@ void Level1Layer::attributes(int r, int c, applyAttributes *layerApplyAttributes } } // Set-at - characterCode = m_teletextPage->character(r, c); + characterCode = m_levelOnePage->character(r, c); switch (characterCode) { case 0x09: // Steady layerApplyAttributes->applyFlash = true; diff --git a/render.h b/render.h index ad5a234..aecbb09 100644 --- a/render.h +++ b/render.h @@ -99,7 +99,7 @@ class TextLayer public: // TextLayer(TeletextPage* thePage) : currentPage(thePage) { }; virtual ~TextLayer() = default; - void setTeletextPage(TeletextPage*); + void setTeletextPage(LevelOnePage *); virtual textCharacter character(int, int) =0; virtual void attributes(int, int, applyAttributes *) =0; virtual int fullScreenColour() const =0; @@ -113,7 +113,7 @@ public: QMultiMap enhanceMap; protected: - TeletextPage* m_teletextPage; + LevelOnePage* m_levelOnePage; int m_layerFullScreenColour=-1; int m_layerFullRowColour[25]; bool m_layerFullRowDownwards[25]; @@ -184,7 +184,7 @@ public: void decodePage(); void renderPage(); void renderPage(int r); - void setTeletextPage(TeletextPage*); + void setTeletextPage(LevelOnePage *); void updateSidePanels(); void buildEnhanceMap(TextLayer *, int=0); QPixmap* pagePixmap(int i) const { return m_pagePixmap[i]; }; @@ -224,7 +224,7 @@ protected: private: textCell m_cell[25][72]; - TeletextPage* m_teletextPage; + LevelOnePage* m_levelOnePage; int m_flashRequired; int m_fullRowColour[25]; QColor m_fullRowQColor[25];