Rename TeletextPage class to LevelOnePage
This commit is contained in:
16
document.cpp
16
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
|
||||
|
||||
@@ -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<TeletextPage *> m_subPages;
|
||||
std::vector<LevelOnePage *> m_subPages;
|
||||
QUndoStack *m_undoStack;
|
||||
int m_cursorRow, m_cursorColumn;
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<int>::of(&QComboBox::currentIndexChanged), [=](int index) { m_parentMainWidget->document()->currentSubPage()->setCycleType(index == 0 ? TeletextPage::CTcycles : TeletextPage::CTseconds); } );
|
||||
connect(m_cycleTypeCombo, QOverload<int>::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);
|
||||
|
||||
96
render.cpp
96
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;
|
||||
|
||||
8
render.h
8
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<int, int> 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];
|
||||
|
||||
Reference in New Issue
Block a user