Fix polymorphism across pagebase and levelonepage
This commit is contained in:
@@ -81,7 +81,7 @@ void LevelOnePage::clearPage()
|
|||||||
// If clearPage() is called outside constructor, we need to implement localEnhance.clear();
|
// If clearPage() is called outside constructor, we need to implement localEnhance.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray LevelOnePage::packet(int packetNumber, int designationCode)
|
QByteArray LevelOnePage::packet(int packetNumber, int designationCode) const
|
||||||
{
|
{
|
||||||
QByteArray result(40, 0x00);
|
QByteArray result(40, 0x00);
|
||||||
|
|
||||||
@@ -256,8 +256,7 @@ bool LevelOnePage::setPacket(int packetNumber, int designationCode, QByteArray p
|
|||||||
int CLUToffset = (designationCode == 0) ? 16 : 0;
|
int CLUToffset = (designationCode == 0) ? 16 : 0;
|
||||||
|
|
||||||
m_defaultCharSet = ((packetContents.at(2) >> 4) & 0x3) | ((packetContents.at(3) << 2) & 0xc);
|
m_defaultCharSet = ((packetContents.at(2) >> 4) & 0x3) | ((packetContents.at(3) << 2) & 0xc);
|
||||||
// Don't set m_defaultNOS directly as we need to keep control bits in subclass in sync
|
m_defaultNOS = (packetContents.at(2) >> 1) & 0x7;
|
||||||
setDefaultNOS((packetContents.at(2) >> 1) & 0x7);
|
|
||||||
m_secondCharSet = ((packetContents.at(3) >> 5) & 0x1) | ((packetContents.at(4) << 1) & 0xe);
|
m_secondCharSet = ((packetContents.at(3) >> 5) & 0x1) | ((packetContents.at(4) << 1) & 0xe);
|
||||||
m_secondNOS = (packetContents.at(3) >> 2) & 0x7;
|
m_secondNOS = (packetContents.at(3) >> 2) & 0x7;
|
||||||
|
|
||||||
@@ -329,6 +328,43 @@ bool LevelOnePage::packetNeeded(int packetNumber, int designationCode) const
|
|||||||
return PageBase::packetNeeded(packetNumber, designationCode);
|
return PageBase::packetNeeded(packetNumber, designationCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool LevelOnePage::controlBit(int bitNumber) const
|
||||||
|
{
|
||||||
|
switch (bitNumber) {
|
||||||
|
case C12NOS:
|
||||||
|
return (m_defaultNOS & 1) == 1;
|
||||||
|
case C13NOS:
|
||||||
|
return (m_defaultNOS & 2) == 2;
|
||||||
|
case C14NOS:
|
||||||
|
return (m_defaultNOS & 4) == 4;
|
||||||
|
default:
|
||||||
|
return PageBase::controlBit(bitNumber);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool LevelOnePage::setControlBit(int bitNumber, bool active)
|
||||||
|
{
|
||||||
|
switch (bitNumber) {
|
||||||
|
case C12NOS:
|
||||||
|
m_defaultNOS &= 0x06;
|
||||||
|
if (active)
|
||||||
|
m_defaultNOS |= 0x01;
|
||||||
|
return true;
|
||||||
|
case C13NOS:
|
||||||
|
m_defaultNOS &= 0x05;
|
||||||
|
if (active)
|
||||||
|
m_defaultNOS |= 0x02;
|
||||||
|
return true;
|
||||||
|
case C14NOS:
|
||||||
|
m_defaultNOS &= 0x03;
|
||||||
|
if (active)
|
||||||
|
m_defaultNOS |= 0x04;
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return PageBase::setControlBit(bitNumber, active);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void LevelOnePage::loadPagePacket(QByteArray &inLine)
|
void LevelOnePage::loadPagePacket(QByteArray &inLine)
|
||||||
{
|
{
|
||||||
bool lineNumberOk;
|
bool lineNumberOk;
|
||||||
@@ -451,9 +487,6 @@ void LevelOnePage::setDefaultCharSet(int newDefaultCharSet) { m_defaultCharSet =
|
|||||||
void LevelOnePage::setDefaultNOS(int defaultNOS)
|
void LevelOnePage::setDefaultNOS(int defaultNOS)
|
||||||
{
|
{
|
||||||
m_defaultNOS = defaultNOS;
|
m_defaultNOS = defaultNOS;
|
||||||
setControlBit(C12NOS, defaultNOS & 1);
|
|
||||||
setControlBit(C13NOS, defaultNOS & 2);
|
|
||||||
setControlBit(C14NOS, defaultNOS & 4);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void LevelOnePage::setSecondCharSet(int newSecondCharSet)
|
void LevelOnePage::setSecondCharSet(int newSecondCharSet)
|
||||||
|
|||||||
@@ -43,10 +43,13 @@ public:
|
|||||||
LevelOnePage();
|
LevelOnePage();
|
||||||
LevelOnePage(const PageBase &);
|
LevelOnePage(const PageBase &);
|
||||||
|
|
||||||
QByteArray packet(int, int=0);
|
QByteArray packet(int, int=0) const override;
|
||||||
bool setPacket(int, QByteArray);
|
bool packetNeeded(int, int=0) const override;
|
||||||
bool setPacket(int, int, QByteArray);
|
bool setPacket(int, QByteArray) override;
|
||||||
bool packetNeeded(int, int=0) const;
|
bool setPacket(int, int, QByteArray) override;
|
||||||
|
|
||||||
|
bool controlBit(int bitNumber) const override;
|
||||||
|
bool setControlBit(int, bool) override;
|
||||||
|
|
||||||
void clearPage();
|
void clearPage();
|
||||||
void loadPagePacket(QByteArray &);
|
void loadPagePacket(QByteArray &);
|
||||||
|
|||||||
@@ -19,10 +19,11 @@
|
|||||||
|
|
||||||
#include "loadsave.h"
|
#include "loadsave.h"
|
||||||
|
|
||||||
|
#include <QByteArray>
|
||||||
#include <QSaveFile>
|
#include <QSaveFile>
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
#include "document.h"
|
#include "document.h"
|
||||||
#include "levelonepage.h"
|
|
||||||
#include "pagebase.h"
|
#include "pagebase.h"
|
||||||
|
|
||||||
// Used by TTI and hashstring
|
// Used by TTI and hashstring
|
||||||
|
|||||||
@@ -20,12 +20,15 @@
|
|||||||
#ifndef LOADSAVE_H
|
#ifndef LOADSAVE_H
|
||||||
#define LOADSAVE_H
|
#define LOADSAVE_H
|
||||||
|
|
||||||
|
#include <QByteArray>
|
||||||
#include <QSaveFile>
|
#include <QSaveFile>
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
#include "document.h"
|
#include "document.h"
|
||||||
#include "pagebase.h"
|
#include "pagebase.h"
|
||||||
|
|
||||||
int controlBitsToPS(PageBase *);
|
int controlBitsToPS(PageBase *);
|
||||||
|
|
||||||
void saveTTI(QSaveFile &, const TeletextDocument &);
|
void saveTTI(QSaveFile &, const TeletextDocument &);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ bool PageBase::setPacketArrayIndex(int arrayIndex, QByteArray packetContents)
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
bool PageBase::deletePacket(int packetNumber, int designationCode)
|
bool PageBase::deletePacket(int packetNumber, int designationCode)
|
||||||
{
|
{
|
||||||
int arrayIndex = packetNumber;
|
int arrayIndex = packetNumber;
|
||||||
@@ -119,7 +119,7 @@ bool PageBase::deletePacketArrayIndex(int arrayIndex)
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
bool PageBase::setControlBit(int bitNumber, bool active)
|
bool PageBase::setControlBit(int bitNumber, bool active)
|
||||||
{
|
{
|
||||||
m_controlBits[bitNumber] = active;
|
m_controlBits[bitNumber] = active;
|
||||||
|
|||||||
18
pagebase.h
18
pagebase.h
@@ -34,19 +34,19 @@ public:
|
|||||||
PageBase(const PageBase &);
|
PageBase(const PageBase &);
|
||||||
~PageBase();
|
~PageBase();
|
||||||
|
|
||||||
QByteArray packet(int, int=0) const;
|
virtual QByteArray packet(int, int=0) const;
|
||||||
bool packetNeeded(int, int=0) const;
|
virtual bool packetNeeded(int, int=0) const;
|
||||||
bool setPacket(int, QByteArray);
|
virtual bool setPacket(int, QByteArray);
|
||||||
bool setPacket(int, int, QByteArray);
|
virtual bool setPacket(int, int, QByteArray);
|
||||||
bool deletePacket(int, int=0);
|
// bool deletePacket(int, int=0);
|
||||||
|
|
||||||
|
virtual bool controlBit(int bitNumber) const { return m_controlBits[bitNumber]; }
|
||||||
|
virtual bool setControlBit(int, bool);
|
||||||
|
|
||||||
QByteArray packetArrayIndex(int) const;
|
QByteArray packetArrayIndex(int) const;
|
||||||
bool packetNeededArrayIndex(int) const;
|
bool packetNeededArrayIndex(int) const;
|
||||||
bool setPacketArrayIndex(int, QByteArray);
|
bool setPacketArrayIndex(int, QByteArray);
|
||||||
bool deletePacketArrayIndex(int);
|
// bool deletePacketArrayIndex(int);
|
||||||
|
|
||||||
bool controlBit(int bitNumber) const { return m_controlBits[bitNumber]; }
|
|
||||||
bool setControlBit(int, bool);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool m_controlBits[11];
|
bool m_controlBits[11];
|
||||||
|
|||||||
Reference in New Issue
Block a user