From 4024efaf016c62e4c17ddeb9b38ef56c7a46b45b Mon Sep 17 00:00:00 2001 From: Gavin MacGregor Date: Tue, 11 Feb 2025 18:46:01 +0000 Subject: [PATCH] Rename packet variables "y": packet number "d": designation code "t": triplet number "packet" renamed to "pkt" in method parameters to avoid ambiguity with the "packet" method. --- src/qteletextdecoder/levelonepage.cpp | 168 +++++++++++++------------- src/qteletextdecoder/levelonepage.h | 16 +-- src/qteletextdecoder/pagebase.cpp | 95 ++++++++------- src/qteletextdecoder/pagebase.h | 23 ++-- src/qteletextdecoder/pagex26base.cpp | 34 +++--- src/qteletextdecoder/pagex26base.h | 4 +- 6 files changed, 174 insertions(+), 166 deletions(-) diff --git a/src/qteletextdecoder/levelonepage.cpp b/src/qteletextdecoder/levelonepage.cpp index f1e2201..f1c6d2e 100644 --- a/src/qteletextdecoder/levelonepage.cpp +++ b/src/qteletextdecoder/levelonepage.cpp @@ -39,16 +39,16 @@ LevelOnePage::LevelOnePage(const PageBase &other) m_enhancements.reserve(maxEnhancements()); clearPage(); - for (int i=0; i<26; i++) - if (other.packetExists(i)) - setPacket(i, other.packet(i)); - for (int i=26; i<30; i++) - for (int j=0; j<16; j++) - if (other.packetExists(i, j)) - setPacket(i, j, other.packet(i)); + for (int y=0; y<26; y++) + if (other.packetExists(y)) + setPacket(y, other.packet(y)); + for (int y=26; y<29; y++) + for (int d=0; d<16; d++) + if (other.packetExists(y, d)) + setPacket(y, d, other.packet(y, d)); - for (int i=PageBase::C4ErasePage; i<=PageBase::C14NOS; i++) - setControlBit(i, other.controlBit(i)); + for (int b=PageBase::C4ErasePage; b<=PageBase::C14NOS; b++) + setControlBit(b, other.controlBit(b)); } // So far we only call clearPage() once, within the constructor @@ -57,8 +57,8 @@ void LevelOnePage::clearPage() for (int r=0; r<25; r++) for (int c=0; c<40; c++) m_level1Page[r][c] = 0x20; - for (int i=C4ErasePage; i<=C14NOS; i++) - setControlBit(i, false); + for (int b=C4ErasePage; b<=C14NOS; b++) + setControlBit(b, false); for (int i=0; i<8; i++) m_composeLink[i] = { (i<4) ? i : 0, false, i>=4, 0x0ff, 0x0000 }; for (int i=0; i<6; i++) @@ -99,31 +99,31 @@ bool LevelOnePage::isEmpty() const return true; } -QByteArray LevelOnePage::packet(int packetNumber) const +QByteArray LevelOnePage::packet(int y) const { QByteArray result(40, 0x00); - if (packetNumber <= 24) { + if (y <= 24) { for (int c=0; c<40; c++) - result[c] = m_level1Page[packetNumber][c]; + result[c] = m_level1Page[y][c]; return result; } - return PageBase::packet(packetNumber); + return PageBase::packet(y); } -QByteArray LevelOnePage::packet(int packetNumber, int designationCode) const +QByteArray LevelOnePage::packet(int y, int d) const { QByteArray result(40, 0x00); - if (packetNumber == 26) { - if (!packetFromEnhancementListNeeded(designationCode)) + if (y == 26) { + if (!packetFromEnhancementListNeeded(d)) return result; // Blank result - return packetFromEnhancementList(designationCode); + return packetFromEnhancementList(d); } - if (packetNumber == 27 && designationCode == 0) { + if (y == 27 && d == 0) { for (int i=0; i<6; i++) { result[i*6+1] = m_fastTextLink[i].pageNumber & 0x00f; result[i*6+2] = (m_fastTextLink[i].pageNumber & 0x0f0) >> 4; @@ -138,9 +138,9 @@ QByteArray LevelOnePage::packet(int packetNumber, int designationCode) const return result; } - if (packetNumber == 27 && (designationCode == 4 || designationCode == 5)) { - for (int i=0; i<(designationCode == 4 ? 6 : 2); i++) { - int pageLinkNumber = i+(designationCode == 4 ? 0 : 6); + if (y == 27 && (d == 4 || d == 5)) { + for (int i=0; i<(d == 4 ? 6 : 2); i++) { + int pageLinkNumber = i+(d == 4 ? 0 : 6); result[i*6+1] = (m_composeLink[pageLinkNumber].level3p5 << 3) | (m_composeLink[pageLinkNumber].level2p5 << 2) | m_composeLink[pageLinkNumber].function; result[i*6+2] = ((m_composeLink[pageLinkNumber].pageNumber & 0x100) >> 3) | 0x10 | (m_composeLink[pageLinkNumber].pageNumber & 0x00f); @@ -154,8 +154,8 @@ QByteArray LevelOnePage::packet(int packetNumber, int designationCode) const return result; } - if (packetNumber == 28 && (designationCode == 0 || designationCode == 4)) { - int CLUToffset = (designationCode == 0) ? 16 : 0; + if (y == 28 && (d == 0 || d == 4)) { + int CLUToffset = (d == 0) ? 16 : 0; result[1] = 0x00; result[2] = ((m_defaultCharSet & 0x3) << 4) | (m_defaultNOS << 1); @@ -175,36 +175,36 @@ QByteArray LevelOnePage::packet(int packetNumber, int designationCode) const return result; } - return PageBase::packet(packetNumber, designationCode); + return PageBase::packet(y, d); } -bool LevelOnePage::setPacket(int packetNumber, QByteArray packetContents) +bool LevelOnePage::setPacket(int y, QByteArray pkt) { - if (packetNumber <= 24) { + if (y <= 24) { for (int c=0; c<40; c++) - m_level1Page[packetNumber][c] = packetContents.at(c); + m_level1Page[y][c] = pkt.at(c); return true; } - qDebug("LevelOnePage unhandled setPacket X/%d", packetNumber); + qDebug("LevelOnePage unhandled setPacket X/%d", y); // BUG can't store unhandled packets as default copy constructor uses pointers - //return PageBase::setPacket(packetNumber, packetContents); + //return PageBase::setPacket(y, pkt); return false; } -bool LevelOnePage::setPacket(int packetNumber, int designationCode, QByteArray packetContents) +bool LevelOnePage::setPacket(int y, int d, QByteArray pkt) { - if (packetNumber == 26) { - setEnhancementListFromPacket(designationCode, packetContents); + if (y == 26) { + setEnhancementListFromPacket(d, pkt); return true; } - if (packetNumber == 27 && designationCode == 0) { + if (y == 27 && d == 0) { for (int i=0; i<6; i++) { - int relativeMagazine = (packetContents.at(i*6+4) >> 3) | ((packetContents.at(i*6+6) & 0xc) >> 1); - int pageNumber = (packetContents.at(i*6+2) << 4) | packetContents.at(i*6+1); + int relativeMagazine = (pkt.at(i*6+4) >> 3) | ((pkt.at(i*6+6) & 0xc) >> 1); + int pageNumber = (pkt.at(i*6+2) << 4) | pkt.at(i*6+1); m_fastTextLink[i].pageNumber = (relativeMagazine << 8) | pageNumber; - m_fastTextLink[i].subPageNumber = packetContents.at(i*6+3) | ((packetContents.at(i*6+4) & 0x7) << 4) | (packetContents.at(i*6+5) << 8) | ((packetContents.at(i*6+6) & 0x3) << 12); + m_fastTextLink[i].subPageNumber = pkt.at(i*6+3) | ((pkt.at(i*6+4) & 0x7) << 4) | (pkt.at(i*6+5) << 8) | ((pkt.at(i*6+6) & 0x3) << 12); // TODO remove this warning when we can preserve FastText subpage links if (m_fastTextLink[i].subPageNumber != 0x3f7f) qDebug("FastText link %d has custom subPageNumber %x - will NOT be saved!", i, m_fastTextLink[i].subPageNumber); @@ -212,73 +212,73 @@ bool LevelOnePage::setPacket(int packetNumber, int designationCode, QByteArray p return true; } - if (packetNumber == 27 && (designationCode == 4 || designationCode == 5)) { - for (int i=0; i<(designationCode == 4 ? 6 : 2); i++) { - int pageLinkNumber = i+(designationCode == 4 ? 0 : 6); - int pageFunction = packetContents.at(i*6+1) & 0x03; + if (y == 27 && (d == 4 || d == 5)) { + for (int i=0; i<(d == 4 ? 6 : 2); i++) { + int pageLinkNumber = i+(d == 4 ? 0 : 6); + int pageFunction = pkt.at(i*6+1) & 0x03; if (i >= 4) m_composeLink[pageLinkNumber].function = pageFunction; else if (i != pageFunction) qDebug("X/27/4 link number %d fixed at function %d. Attempted to set to %d.", pageLinkNumber, pageLinkNumber, pageFunction); - m_composeLink[pageLinkNumber].level2p5 = packetContents.at(i*6+1) & 0x04; - m_composeLink[pageLinkNumber].level3p5 = packetContents.at(i*6+1) & 0x08; + m_composeLink[pageLinkNumber].level2p5 = pkt.at(i*6+1) & 0x04; + m_composeLink[pageLinkNumber].level3p5 = pkt.at(i*6+1) & 0x08; - m_composeLink[pageLinkNumber].pageNumber = ((packetContents.at(i*6+3) & 0x03) << 9) | ((packetContents.at(i*6+2) & 0x20) << 3) | ((packetContents.at(i*6+3) & 0x3c) << 2) | (packetContents.at(i*6+2) & 0x0f); + m_composeLink[pageLinkNumber].pageNumber = ((pkt.at(i*6+3) & 0x03) << 9) | ((pkt.at(i*6+2) & 0x20) << 3) | ((pkt.at(i*6+3) & 0x3c) << 2) | (pkt.at(i*6+2) & 0x0f); - m_composeLink[pageLinkNumber].subPageCodes = (packetContents.at(i*6+4) >> 2) | (packetContents.at(i*6+5) << 4) | (packetContents.at(i*6+6) << 10); + m_composeLink[pageLinkNumber].subPageCodes = (pkt.at(i*6+4) >> 2) | (pkt.at(i*6+5) << 4) | (pkt.at(i*6+6) << 10); } return true; } - if (packetNumber == 28 && (designationCode == 0 || designationCode == 4)) { - int CLUToffset = (designationCode == 0) ? 16 : 0; + if (y == 28 && (d == 0 || d == 4)) { + int CLUToffset = (d == 0) ? 16 : 0; - m_defaultCharSet = ((packetContents.at(2) >> 4) & 0x3) | ((packetContents.at(3) << 2) & 0xc); - m_defaultNOS = (packetContents.at(2) >> 1) & 0x7; - m_secondCharSet = ((packetContents.at(3) >> 5) & 0x1) | ((packetContents.at(4) << 1) & 0xe); - m_secondNOS = (packetContents.at(3) >> 2) & 0x7; + m_defaultCharSet = ((pkt.at(2) >> 4) & 0x3) | ((pkt.at(3) << 2) & 0xc); + m_defaultNOS = (pkt.at(2) >> 1) & 0x7; + m_secondCharSet = ((pkt.at(3) >> 5) & 0x1) | ((pkt.at(4) << 1) & 0xe); + m_secondNOS = (pkt.at(3) >> 2) & 0x7; - m_leftSidePanelDisplayed = (packetContents.at(4) >> 3) & 1; - m_rightSidePanelDisplayed = (packetContents.at(4) >> 4) & 1; - m_sidePanelStatusL25 = (packetContents.at(4) >> 5) & 1; - m_sidePanelColumns = packetContents.at(5) & 0xf; + m_leftSidePanelDisplayed = (pkt.at(4) >> 3) & 1; + m_rightSidePanelDisplayed = (pkt.at(4) >> 4) & 1; + m_sidePanelStatusL25 = (pkt.at(4) >> 5) & 1; + m_sidePanelColumns = pkt.at(5) & 0xf; for (int c=0; c<16; c++) - m_CLUT[CLUToffset+c] = ((packetContents.at(c*2+5) << 4) & 0x300) | ((packetContents.at(c*2+6) << 10) & 0xc00) | ((packetContents.at(c*2+6) << 2) & 0x0f0) | (packetContents.at(c*2+7) & 0x00f); + m_CLUT[CLUToffset+c] = ((pkt.at(c*2+5) << 4) & 0x300) | ((pkt.at(c*2+6) << 10) & 0xc00) | ((pkt.at(c*2+6) << 2) & 0x0f0) | (pkt.at(c*2+7) & 0x00f); - m_defaultScreenColour = (packetContents.at(37) >> 4) | ((packetContents.at(38) << 2) & 0x1c); - m_defaultRowColour = ((packetContents.at(38)) >> 3) | ((packetContents.at(39) << 3) & 0x18); - m_blackBackgroundSubst = (packetContents.at(39) >> 2) & 1; - m_colourTableRemap = (packetContents.at(39) >> 3) & 7; + m_defaultScreenColour = (pkt.at(37) >> 4) | ((pkt.at(38) << 2) & 0x1c); + m_defaultRowColour = ((pkt.at(38)) >> 3) | ((pkt.at(39) << 3) & 0x18); + m_blackBackgroundSubst = (pkt.at(39) >> 2) & 1; + m_colourTableRemap = (pkt.at(39) >> 3) & 7; return true; } - qDebug("LevelOnePage unhandled setPacket X/%d/%d", packetNumber, designationCode); + qDebug("LevelOnePage unhandled setPacket X/%d/%d", y, d); // BUG can't store unhandled packets as default copy constructor uses pointers - //return PageBase::setPacket(packetNumber, designationCode, packetContents); + //return PageBase::setPacket(y, d, pkt); return false; } -bool LevelOnePage::packetExists(int packetNumber) const +bool LevelOnePage::packetExists(int y) const { - if (packetNumber <= 24) { + if (y <= 24) { for (int c=0; c<40; c++) - if (m_level1Page[packetNumber][c] != 0x20) + if (m_level1Page[y][c] != 0x20) return true; return false; } - return PageBase::packetExists(packetNumber); + return PageBase::packetExists(y); } -bool LevelOnePage::packetExists(int packetNumber, int designationCode) const +bool LevelOnePage::packetExists(int y, int d) const { - if (packetNumber == 26) - return packetFromEnhancementListNeeded(designationCode); + if (y == 26) + return packetFromEnhancementListNeeded(d); - if (packetNumber == 27 && designationCode == 0) { + if (y == 27 && d == 0) { for (int i=0; i<6; i++) if ((m_fastTextLink[i].pageNumber & 0x0ff) != 0xff) return true; @@ -286,31 +286,31 @@ bool LevelOnePage::packetExists(int packetNumber, int designationCode) const return false; } - if (packetNumber == 27 && (designationCode == 4 || designationCode == 5)) { - for (int i=0; i<(designationCode == 4 ? 6 : 2); i++) { - int pageLinkNumber = i+(designationCode == 4 ? 0 : 6); + if (y == 27 && (d == 4 || d == 5)) { + for (int i=0; i<(d == 4 ? 6 : 2); i++) { + int pageLinkNumber = i+(d == 4 ? 0 : 6); if ((m_composeLink[pageLinkNumber].pageNumber & 0x0ff) != 0x0ff) return true; } return false; } - if (packetNumber == 28) { - if (designationCode == 0) { + if (y == 28) { + if (d == 0) { if (m_leftSidePanelDisplayed || m_rightSidePanelDisplayed || m_defaultScreenColour !=0 || m_defaultRowColour !=0 || m_blackBackgroundSubst || m_colourTableRemap !=0 || m_defaultCharSet != 0 || m_secondCharSet != 0xf) return true; return !isPaletteDefault(16, 31); } - if (designationCode == 4) + if (d == 4) return !isPaletteDefault(0, 15); } - return PageBase::packetExists(packetNumber, designationCode); + return PageBase::packetExists(y, d); } -bool LevelOnePage::controlBit(int bitNumber) const +bool LevelOnePage::controlBit(int b) const { - switch (bitNumber) { + switch (b) { case C12NOS: return (m_defaultNOS & 1) == 1; case C13NOS: @@ -318,13 +318,13 @@ bool LevelOnePage::controlBit(int bitNumber) const case C14NOS: return (m_defaultNOS & 4) == 4; default: - return PageBase::controlBit(bitNumber); + return PageBase::controlBit(b); } } -bool LevelOnePage::setControlBit(int bitNumber, bool active) +bool LevelOnePage::setControlBit(int b, bool active) { - switch (bitNumber) { + switch (b) { case C12NOS: m_defaultNOS &= 0x06; if (active) @@ -341,7 +341,7 @@ bool LevelOnePage::setControlBit(int bitNumber, bool active) m_defaultNOS |= 0x04; return true; default: - return PageBase::setControlBit(bitNumber, active); + return PageBase::setControlBit(b, active); } } diff --git a/src/qteletextdecoder/levelonepage.h b/src/qteletextdecoder/levelonepage.h index e1b65ee..f2c40f8 100644 --- a/src/qteletextdecoder/levelonepage.h +++ b/src/qteletextdecoder/levelonepage.h @@ -41,15 +41,15 @@ public: bool isEmpty() const override; - QByteArray packet(int packetNumber) const override; - QByteArray packet(int packetNumber, int designationCode) const override; - bool packetExists(int packetNumber) const override; - bool packetExists(int packetNumber, int designationCode) const override; - bool setPacket(int packetNumber, QByteArray packetContents) override; - bool setPacket(int packetNumber, int designationCode, QByteArray packetContents) override; + QByteArray packet(int y) const override; + QByteArray packet(int y, int d) const override; + bool packetExists(int y) const override; + bool packetExists(int y, int d) const override; + bool setPacket(int y, QByteArray pkt) override; + bool setPacket(int y, int d, QByteArray pkt) override; - bool controlBit(int bitNumber) const override; - bool setControlBit(int bitNumber, bool active) override; + bool controlBit(int b) const override; + bool setControlBit(int b, bool active) override; void clearPage(); diff --git a/src/qteletextdecoder/pagebase.cpp b/src/qteletextdecoder/pagebase.cpp index 510b9ce..16bd179 100644 --- a/src/qteletextdecoder/pagebase.cpp +++ b/src/qteletextdecoder/pagebase.cpp @@ -24,99 +24,108 @@ PageBase::PageBase() { // We use nullptrs to keep track of allocated packets, so initialise them this way - for (int i=0; i<26; i++) - m_displayPackets[i] = nullptr; - for (int i=0; i<4; i++) - for (int j=0; j<16; j++) - m_designationPackets[i][j] = nullptr; + for (int y=0; y<26; y++) + m_displayPackets[y] = nullptr; + for (int y=0; y<3; y++) + for (int d=0; d<16; d++) + m_designationPackets[y][d] = nullptr; - for (int i=PageBase::C4ErasePage; i<=PageBase::C14NOS; i++) - m_controlBits[i] = false; + for (int b=PageBase::C4ErasePage; b<=PageBase::C14NOS; b++) + m_controlBits[b] = false; } PageBase::~PageBase() { - for (int i=0; i<26; i++) - if (m_displayPackets[i] != nullptr) - delete m_displayPackets[i]; - for (int i=0; i<4; i++) - for (int j=0; j<16; j++) - if (m_designationPackets[i][j] != nullptr) - delete m_designationPackets[i][j]; + for (int y=0; y<26; y++) + if (m_displayPackets[y] != nullptr) + delete m_displayPackets[y]; + for (int y=0; y<3; y++) + for (int d=0; d<16; d++) + if (m_designationPackets[y][d] != nullptr) + delete m_designationPackets[y][d]; } bool PageBase::isEmpty() const { - for (int i=0; i<26; i++) - if (m_displayPackets[i] != nullptr) + for (int y=0; y<26; y++) + if (m_displayPackets[y] != nullptr) return false; - for (int i=0; i<4; i++) - for (int j=0; j<16; j++) - if (m_designationPackets[i][j] != nullptr) + for (int y=0; y<3; y++) + for (int d=0; d<16; d++) + if (m_designationPackets[y][d] != nullptr) return false; return true; } -QByteArray PageBase::packet(int i) const +QByteArray PageBase::packet(int y) const { - if (m_displayPackets[i] == nullptr) + if (m_displayPackets[y] == nullptr) return QByteArray(); // Blank result - return *m_displayPackets[i]; + return *m_displayPackets[y]; } -QByteArray PageBase::packet(int i, int j) const +QByteArray PageBase::packet(int y, int d) const { - if (m_designationPackets[i-26][j] == nullptr) + if (m_designationPackets[y-26][d] == nullptr) return QByteArray(); // Blank result - return *m_designationPackets[i-26][j]; + return *m_designationPackets[y-26][d]; } -bool PageBase::setPacket(int i, QByteArray packetContents) +bool PageBase::setPacket(int y, QByteArray pkt) { - if (m_displayPackets[i] == nullptr) - m_displayPackets[i] = new QByteArray(40, 0x00); - *m_displayPackets[i] = packetContents; + if (m_displayPackets[y] == nullptr) + m_displayPackets[y] = new QByteArray(40, 0x00); + *m_displayPackets[y] = pkt; return true; } -bool PageBase::setPacket(int i, int j, QByteArray packetContents) +bool PageBase::setPacket(int y, int d, QByteArray pkt) { - if (m_designationPackets[i-26][j] == nullptr) - m_designationPackets[i-26][j] = new QByteArray(40, 0x00); - *m_designationPackets[i-26][j] = packetContents; + if (m_designationPackets[y-26][d] == nullptr) + m_designationPackets[y-26][d] = new QByteArray(40, 0x00); + *m_designationPackets[y-26][d] = pkt; return true; } /* -bool PageBase::deletePacket(int i) +bool PageBase::clearPacket(int y) { - if (m_displayPackets[i] != nullptr) { - delete m_displayPackets[i]; - m_displayPackets[i] = nullptr; + if (m_displayPackets[y] != nullptr) { + delete m_displayPackets[y]; + m_displayPackets[y] = nullptr; } return true; } -bool PageBase::deletePacket(int i) +bool PageBase::clearPacket(int y, int d) { - if (m_designationPackets[i-26][j] != nullptr) { - delete m_designationPackets[i-26][j]; - m_designationPackets[i-26][j] = nullptr; + if (m_designationPackets[y-26][d] != nullptr) { + delete m_designationPackets[y-26][d]; + m_designationPackets[y-26][d] = nullptr; } return true; } + +void SubPage::clearAllPackets() +{ + for (int y=0; y<26; y++) + clearPacket(y); + for (int y=0; y<3; y++) + for (int d=0; d<16; d++) + clearPacket(y, d); +} */ -bool PageBase::setControlBit(int bitNumber, bool active) +bool PageBase::setControlBit(int b, bool active) { - m_controlBits[bitNumber] = active; + m_controlBits[b] = active; return true; } diff --git a/src/qteletextdecoder/pagebase.h b/src/qteletextdecoder/pagebase.h index 6824dd9..ac8c9ef 100644 --- a/src/qteletextdecoder/pagebase.h +++ b/src/qteletextdecoder/pagebase.h @@ -35,21 +35,22 @@ public: virtual bool isEmpty() const; - virtual QByteArray packet(int i) const; - virtual QByteArray packet(int i, int j) const; - virtual bool packetExists(int i) const { return m_displayPackets[i] != nullptr; } - virtual bool packetExists(int i, int j) const { return m_designationPackets[i-26][j] != nullptr; } - virtual bool setPacket(int i, QByteArray packetContents); - virtual bool setPacket(int i, int j, QByteArray packetContents); -// bool deletePacket(int); -// bool deletePacket(int, int); + virtual QByteArray packet(int y) const; + virtual QByteArray packet(int y, int d) const; + virtual bool packetExists(int y) const { return m_displayPackets[y] != nullptr; } + virtual bool packetExists(int y, int d) const { return m_designationPackets[y-26][d] != nullptr; } + virtual bool setPacket(int y, QByteArray packet); + virtual bool setPacket(int y, int d, QByteArray pkt); +// bool clearPacket(int y); +// bool clearPacket(int y, int d); +// void clearAllPackets(); - virtual bool controlBit(int bitNumber) const { return m_controlBits[bitNumber]; } - virtual bool setControlBit(int bitNumber, bool active); + virtual bool controlBit(int b) const { return m_controlBits[b]; } + virtual bool setControlBit(int b, bool active); private: bool m_controlBits[11]; - QByteArray *m_displayPackets[26], *m_designationPackets[4][16]; + QByteArray *m_displayPackets[26], *m_designationPackets[3][16]; }; #endif diff --git a/src/qteletextdecoder/pagex26base.cpp b/src/qteletextdecoder/pagex26base.cpp index 8eacb4c..730bc29 100644 --- a/src/qteletextdecoder/pagex26base.cpp +++ b/src/qteletextdecoder/pagex26base.cpp @@ -21,20 +21,19 @@ #include "pagex26base.h" -QByteArray PageX26Base::packetFromEnhancementList(int packetNumber) const +QByteArray PageX26Base::packetFromEnhancementList(int p) const { QByteArray result(40, 0x00); - int enhanceListPointer; X26Triplet lastTriplet; - for (int i=0; i<13; i++) { - enhanceListPointer = packetNumber*13+i; + for (int t=0; t<13; t++) { + const int enhanceListPointer = p*13+t; if (enhanceListPointer < m_enhancements.size()) { - result[i*3+1] = m_enhancements.at(enhanceListPointer).address(); - result[i*3+2] = m_enhancements.at(enhanceListPointer).mode() | ((m_enhancements.at(enhanceListPointer).data() & 1) << 5); - result[i*3+3] = m_enhancements.at(enhanceListPointer).data() >> 1; + result[t*3+1] = m_enhancements.at(enhanceListPointer).address(); + result[t*3+2] = m_enhancements.at(enhanceListPointer).mode() | ((m_enhancements.at(enhanceListPointer).data() & 1) << 5); + result[t*3+3] = m_enhancements.at(enhanceListPointer).data() >> 1; // If this is the last triplet, get a copy to repeat to the end of the packet if (enhanceListPointer == m_enhancements.size()-1) { @@ -48,32 +47,31 @@ QByteArray PageX26Base::packetFromEnhancementList(int packetNumber) const } } else { // We've gone past the end of the triplet list, so repeat the Termination Marker to the end - result[i*3+1] = lastTriplet.address(); - result[i*3+2] = lastTriplet.mode() | ((lastTriplet.data() & 1) << 5); - result[i*3+3] = lastTriplet.data() >> 1; + result[t*3+1] = lastTriplet.address(); + result[t*3+2] = lastTriplet.mode() | ((lastTriplet.data() & 1) << 5); + result[t*3+3] = lastTriplet.data() >> 1; } } return result; } -void PageX26Base::setEnhancementListFromPacket(int packetNumber, QByteArray packetContents) +void PageX26Base::setEnhancementListFromPacket(int p, QByteArray pkt) { // Preallocate entries in the m_enhancements list to hold our incoming triplets. // We write "dummy" reserved 11110 Row Triplets in the allocated entries which then get overwritten by the packet contents. // This is in case of missing packets so we can keep Local Object pointers valid. - while (m_enhancements.size() < (packetNumber+1)*13) + while (m_enhancements.size() < (p+1)*13) m_enhancements.append(m_paddingX26Triplet); - int enhanceListPointer; X26Triplet newX26Triplet; - for (int i=0; i<13; i++) { - enhanceListPointer = packetNumber*13+i; + for (int t=0; t<13; t++) { + const int enhanceListPointer = p*13+t; - newX26Triplet.setAddress(packetContents.at(i*3+1) & 0x3f); - newX26Triplet.setMode(packetContents.at(i*3+2) & 0x1f); - newX26Triplet.setData(((packetContents.at(i*3+3) & 0x3f) << 1) | ((packetContents.at(i*3+2) & 0x20) >> 5)); + newX26Triplet.setAddress(pkt.at(t*3+1) & 0x3f); + newX26Triplet.setMode(pkt.at(t*3+2) & 0x1f); + newX26Triplet.setData(((pkt.at(t*3+3) & 0x3f) << 1) | ((pkt.at(t*3+2) & 0x20) >> 5)); m_enhancements.replace(enhanceListPointer, newX26Triplet); } if (newX26Triplet.mode() == 0x1f && newX26Triplet.address() == 0x3f && newX26Triplet.data() & 0x01) diff --git a/src/qteletextdecoder/pagex26base.h b/src/qteletextdecoder/pagex26base.h index ea32ba0..32c3899 100644 --- a/src/qteletextdecoder/pagex26base.h +++ b/src/qteletextdecoder/pagex26base.h @@ -35,8 +35,8 @@ public: virtual int maxEnhancements() const =0; protected: - QByteArray packetFromEnhancementList(int packetNumber) const; - void setEnhancementListFromPacket(int packetNumber, QByteArray packetContents); + QByteArray packetFromEnhancementList(int p) const; + void setEnhancementListFromPacket(int p, QByteArray pkt); bool packetFromEnhancementListNeeded(int n) const { return ((m_enhancements.size()+12) / 13) > n; }; X26TripletList m_enhancements;