Encapsulate X/26 triplet list in composition class
This commit is contained in:
@@ -74,7 +74,7 @@ void PageX26Base::setEnhancementListFromPacket(int packetNumber, QByteArray pack
|
||||
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));
|
||||
m_enhancements[enhanceListPointer] = newX26Triplet;
|
||||
m_enhancements.replace(enhanceListPointer, newX26Triplet);
|
||||
}
|
||||
if (newX26Triplet.mode() == 0x1f && newX26Triplet.address() == 0x3f && newX26Triplet.data() & 0x01)
|
||||
// Last triplet was a Termination Marker (without ..follows) so clean up the repeated ones
|
||||
|
||||
@@ -31,7 +31,7 @@ class PageX26Base : public PageBase //: public QObject
|
||||
//Q_OBJECT
|
||||
|
||||
public:
|
||||
QList<X26Triplet> *enhancements() { return &m_enhancements; };
|
||||
X26TripletList *enhancements() { return &m_enhancements; };
|
||||
virtual int maxEnhancements() const =0;
|
||||
|
||||
protected:
|
||||
@@ -39,7 +39,7 @@ protected:
|
||||
void setEnhancementListFromPacket(int, QByteArray);
|
||||
bool packetFromEnhancementListNeeded(int n) const { return ((m_enhancements.size()+12) / 13) > n; };
|
||||
|
||||
QList<X26Triplet> m_enhancements;
|
||||
X26TripletList m_enhancements;
|
||||
const X26Triplet m_paddingX26Triplet { 41, 0x1e, 0 };
|
||||
};
|
||||
|
||||
|
||||
@@ -273,7 +273,7 @@ void TeletextPageRender::decodePage()
|
||||
setFullRowColour(r ,downwardsFullRowColour);
|
||||
|
||||
m_textLayer[1]->enhanceMap.clear();
|
||||
if (m_renderLevel == 0 || m_levelOnePage->enhancements()->empty())
|
||||
if (m_renderLevel == 0 || m_levelOnePage->enhancements()->isEmpty())
|
||||
return;
|
||||
|
||||
m_textLayer[1]->setFullScreenColour(-1);
|
||||
|
||||
@@ -164,7 +164,7 @@ void EditTripletCommand::redo()
|
||||
if (m_teletextDocument->currentSubPageIndex() != m_subPageIndex)
|
||||
m_teletextDocument->selectSubPageIndex(m_subPageIndex, true);
|
||||
|
||||
m_teletextDocument->currentSubPage()->enhancements()->operator[](m_row) = m_newTriplet;
|
||||
m_teletextDocument->currentSubPage()->enhancements()->replace(m_row, m_newTriplet);
|
||||
m_x26Model->emit dataChanged(m_x26Model->createIndex(m_row, 0), m_x26Model->createIndex(m_row, 3), {m_role});
|
||||
m_teletextDocument->emit refreshNeeded();
|
||||
|
||||
@@ -179,7 +179,7 @@ void EditTripletCommand::undo()
|
||||
if (m_teletextDocument->currentSubPageIndex() != m_subPageIndex)
|
||||
m_teletextDocument->selectSubPageIndex(m_subPageIndex, true);
|
||||
|
||||
m_teletextDocument->currentSubPage()->enhancements()->operator[](m_row) = m_oldTriplet;
|
||||
m_teletextDocument->currentSubPage()->enhancements()->replace(m_row, m_oldTriplet);
|
||||
m_x26Model->emit dataChanged(m_x26Model->createIndex(m_row, 0), m_x26Model->createIndex(m_row, 3), {m_role});
|
||||
m_teletextDocument->emit refreshNeeded();
|
||||
m_teletextDocument->emit tripletCommandHighlight(m_row);
|
||||
|
||||
@@ -50,3 +50,24 @@ void X26Triplet::setAddressColumn(int addressColumn)
|
||||
{
|
||||
m_address = addressColumn;
|
||||
}
|
||||
|
||||
|
||||
void X26TripletList::append(const X26Triplet &value)
|
||||
{
|
||||
m_list.append(value);
|
||||
}
|
||||
|
||||
void X26TripletList::insert(int i, const X26Triplet &value)
|
||||
{
|
||||
m_list.insert(i, value);
|
||||
}
|
||||
|
||||
void X26TripletList::removeAt(int i)
|
||||
{
|
||||
m_list.removeAt(i);
|
||||
}
|
||||
|
||||
void X26TripletList::replace(int i, const X26Triplet &value)
|
||||
{
|
||||
m_list.replace(i, value);
|
||||
}
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
#ifndef X26TRIPLETS_H
|
||||
#define X26TRIPLETS_H
|
||||
|
||||
#include <QList>
|
||||
|
||||
class X26Triplet
|
||||
{
|
||||
public:
|
||||
@@ -46,7 +48,25 @@ public:
|
||||
|
||||
private:
|
||||
int m_address, m_mode, m_data;
|
||||
};
|
||||
|
||||
class X26TripletList
|
||||
{
|
||||
public:
|
||||
void append(const X26Triplet &);
|
||||
void insert(int, const X26Triplet &);
|
||||
void removeAt(int);
|
||||
void replace(int, const X26Triplet &);
|
||||
|
||||
void removeLast() { m_list.removeLast(); }
|
||||
|
||||
const X26Triplet &at(int i) const { return m_list.at(i); }
|
||||
bool isEmpty() const { return m_list.isEmpty(); }
|
||||
void reserve(int alloc) { m_list.reserve(alloc); }
|
||||
int size() const { return m_list.size(); }
|
||||
|
||||
private:
|
||||
QList<X26Triplet> m_list;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user