diff --git a/document.cpp b/document.cpp index d0c2d48..eed8c20 100644 --- a/document.cpp +++ b/document.cpp @@ -99,8 +99,8 @@ void TeletextDocument::loadDocument(QFile *inFile) bool pageStatusOk; int pageStatusRead = inLine.mid(3, 4).toInt(&pageStatusOk, 16); if (pageStatusOk) { - loadingPage->setControlBit(0, pageStatusRead & 0x4000); - for (int i=1, pageStatusBit=0x0001; i<8; i++, pageStatusBit<<=1) + loadingPage->setControlBit(PageBase::C4ErasePage, pageStatusRead & 0x4000); + for (int i=PageBase::C5Newsflash, pageStatusBit=0x0001; i<=PageBase::C11SerialMagazine; i++, pageStatusBit<<=1) loadingPage->setControlBit(i, pageStatusRead & pageStatusBit); loadingPage->setDefaultNOS(((pageStatusRead & 0x0200) >> 9) | ((pageStatusRead & 0x0100) >> 7) | ((pageStatusRead & 0x0080) >> 5)); } diff --git a/levelonepage.cpp b/levelonepage.cpp index 57c0d44..f15782a 100644 --- a/levelonepage.cpp +++ b/levelonepage.cpp @@ -42,7 +42,7 @@ LevelOnePage::LevelOnePage(const PageBase &other) localEnhance.reserve(208); clearPage(); - for (int i=0; i<8; i++) + for (int i=PageBase::C4ErasePage; i<=PageBase::C11SerialMagazine; i++) setControlBit(i, other.controlBit(i)); for (int i=0; i<90; i++) if (other.packetNeededArrayIndex(i)) @@ -426,8 +426,8 @@ void LevelOnePage::savePage(QTextStream *outStream, int pageNumber, int subPageN int LevelOnePage::controlBitsToPS() const { //TODO map page language for regions other than 0 - int pageStatus = 0x8000 | (controlBit(0) << 14) | ((m_defaultNOS & 1) << 9) | ((m_defaultNOS & 2) << 7) | ((m_defaultNOS & 4) << 5); - for (int i=1; i<8; i++) + int pageStatus = 0x8000 | (controlBit(PageBase::C4ErasePage) << 14) | ((m_defaultNOS & 1) << 9) | ((m_defaultNOS & 2) << 7) | ((m_defaultNOS & 4) << 5); + for (int i=C5Newsflash; i<=C11SerialMagazine; i++) pageStatus |= controlBit(i) << (i-1); return pageStatus; } diff --git a/pagebase.cpp b/pagebase.cpp index 2063653..1536dfc 100644 --- a/pagebase.cpp +++ b/pagebase.cpp @@ -26,13 +26,13 @@ PageBase::PageBase() // We use nullptrs to keep track of allocated packets, so initialise them this way for (int i=0; i<90; i++) m_packets[i] = nullptr; - for (int i=0; i<8; i++) + for (int i=PageBase::C4ErasePage; i<=PageBase::C11SerialMagazine; i++) m_controlBits[i] = false; } PageBase::PageBase(const PageBase &other) { - for (int i=0; i<8; i++) + for (int i=PageBase::C4ErasePage; i<=PageBase::C11SerialMagazine; i++) setControlBit(i, other.controlBit(i)); for (int i=0; i<90; i++) if (other.packetNeededArrayIndex(i)) diff --git a/pagebase.h b/pagebase.h index 53530f6..25ebcd1 100644 --- a/pagebase.h +++ b/pagebase.h @@ -28,6 +28,8 @@ class PageBase //: public QObject //Q_OBJECT public: + enum ControlBitsEnum { C4ErasePage, C5Newsflash, C6Subtitle, C7SuppressHeader, C8Update, C9InterruptedSequence, C10InhibitDisplay, C11SerialMagazine }; + PageBase(); PageBase(const PageBase &); ~PageBase(); diff --git a/render.cpp b/render.cpp index 654b531..095ce5c 100644 --- a/render.cpp +++ b/render.cpp @@ -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_levelOnePage->controlBit(1) || m_levelOnePage->controlBit(2) || m_mix) && !resultAttributes.display.boxingWindow; + bool transparentBackground = (m_levelOnePage->controlBit(PageBase::C5Newsflash) || m_levelOnePage->controlBit(PageBase::C6Subtitle) || 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_levelOnePage->controlBit(1) || m_levelOnePage->controlBit(2)) && !resultAttributes.display.boxingWindow) { + if ((m_levelOnePage->controlBit(PageBase::C5Newsflash) || m_levelOnePage->controlBit(PageBase::C6Subtitle)) && !resultAttributes.display.boxingWindow) { // Outside a boxed area resultCharacter = { 0x20, 0, 0 }; underlined = false; @@ -629,7 +629,7 @@ void TeletextPageRender::updateFlashRequired(int newFlashRequired) inline void TeletextPageRender::setFullScreenColour(int newColour) { - if (m_mix || m_levelOnePage->controlBit(1) || m_levelOnePage->controlBit(2)) { + if (m_mix || m_levelOnePage->controlBit(PageBase::C5Newsflash) || m_levelOnePage->controlBit(PageBase::C6Subtitle)) { m_finalFullScreenQColor = QColor(0, 0, 0, 0); emit fullScreenColourChanged(QColor(0, 0, 0, 0)); return; @@ -644,7 +644,7 @@ inline void TeletextPageRender::setFullScreenColour(int newColour) inline void TeletextPageRender::setFullRowColour(int row, int newColour) { - if (m_mix || m_levelOnePage->controlBit(1) || m_levelOnePage->controlBit(2)) { + if (m_mix || m_levelOnePage->controlBit(PageBase::C5Newsflash) || m_levelOnePage->controlBit(PageBase::C6Subtitle)) { m_fullRowQColor[row] = QColor(0, 0, 0, 0); emit fullRowColourChanged(row, QColor(0, 0, 0, 0)); return;