From 564243822e3810fbc8b9dcece4626b9ff25b8ba0 Mon Sep 17 00:00:00 2001 From: Gavin MacGregor Date: Sun, 2 Mar 2025 23:01:33 +0000 Subject: [PATCH] Add RE command to TTI file handling --- src/qteletextdecoder/levelonepage.cpp | 2 +- src/qteletextmaker/loadformats.cpp | 6 ++++++ src/qteletextmaker/saveformats.cpp | 8 +++++--- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/qteletextdecoder/levelonepage.cpp b/src/qteletextdecoder/levelonepage.cpp index f1e2201..280d15b 100644 --- a/src/qteletextdecoder/levelonepage.cpp +++ b/src/qteletextdecoder/levelonepage.cpp @@ -297,7 +297,7 @@ bool LevelOnePage::packetExists(int packetNumber, int designationCode) const if (packetNumber == 28) { if (designationCode == 0) { - if (m_leftSidePanelDisplayed || m_rightSidePanelDisplayed || m_defaultScreenColour !=0 || m_defaultRowColour !=0 || m_blackBackgroundSubst || m_colourTableRemap !=0 || m_defaultCharSet != 0 || m_secondCharSet != 0xf) + if (m_leftSidePanelDisplayed || m_rightSidePanelDisplayed || m_defaultScreenColour != 0 || m_defaultRowColour != 0 || m_blackBackgroundSubst || m_colourTableRemap != 0 || m_secondCharSet != 0xf) return true; return !isPaletteDefault(16, 31); } diff --git a/src/qteletextmaker/loadformats.cpp b/src/qteletextmaker/loadformats.cpp index 627af48..40e97b6 100644 --- a/src/qteletextmaker/loadformats.cpp +++ b/src/qteletextmaker/loadformats.cpp @@ -79,6 +79,12 @@ bool LoadTTIFormat::load(QFile *inFile, TeletextDocument *document) loadingPage->setDefaultNOS(((pageStatusRead & 0x0200) >> 9) | ((pageStatusRead & 0x0100) >> 7) | ((pageStatusRead & 0x0080) >> 5)); } } + if (inLine.startsWith("RE,")) { + bool regionValueOk; + int regionValueRead = inLine.remove(0, 3).toInt(®ionValueOk); + if (regionValueOk) + loadingPage->setDefaultCharSet(regionValueRead); + } if (inLine.startsWith("CT,") && (inLine.endsWith(",C") || inLine.endsWith(",T"))) { bool cycleValueOk; int cycleValueRead = inLine.mid(3, inLine.size()-5).toInt(&cycleValueOk); diff --git a/src/qteletextmaker/saveformats.cpp b/src/qteletextmaker/saveformats.cpp index b4f6f9b..6d088cd 100644 --- a/src/qteletextmaker/saveformats.cpp +++ b/src/qteletextmaker/saveformats.cpp @@ -190,10 +190,12 @@ void SaveTTIFormat::writeSubPageStart(const PageBase &subPage, int subPageNumber writeString(QString("PS,%1").arg(0x8000 | statusBits, 4, 16, QChar('0'))); - if (m_document->pageFunction() == TeletextDocument::PFLevelOnePage) + if (m_document->pageFunction() == TeletextDocument::PFLevelOnePage) { + // Level One Page: page region and cycle + writeString(QString("RE,%1").arg(static_cast(&subPage)->defaultCharSet())); writeString(QString("CT,%1,%2").arg(static_cast(&subPage)->cycleValue()).arg(static_cast(&subPage)->cycleType()==LevelOnePage::CTcycles ? 'C' : 'T')); - else - // X/28/0 specifies page function and coding but the PF command + } else + // Not a Level One Page: X/28/0 specifies page function and coding but the PF command // should make it obvious to a human that this is not a Level One Page writeString(QString("PF,%1,%2").arg(m_document->pageFunction()).arg(m_document->packetCoding())); }