From 1b3623d61b216eb4f508a56513ab3907eddca1ab Mon Sep 17 00:00:00 2001 From: Gavin MacGregor Date: Wed, 29 Oct 2025 19:37:56 +0000 Subject: [PATCH] Move some getters from headers --- src/qteletextdecoder/drcspage.cpp | 10 ++ src/qteletextdecoder/drcspage.h | 4 +- src/qteletextdecoder/levelonepage.cpp | 184 ++++++++++++++++++++++++-- src/qteletextdecoder/levelonepage.h | 48 +++---- src/qteletextdecoder/pagebase.cpp | 35 +++++ src/qteletextdecoder/pagebase.h | 19 ++- src/qteletextdecoder/pagex26base.cpp | 10 ++ src/qteletextdecoder/pagex26base.h | 8 +- src/qteletextdecoder/x26triplets.cpp | 139 +++++++++++++++++++ src/qteletextdecoder/x26triplets.h | 59 ++++----- 10 files changed, 432 insertions(+), 84 deletions(-) diff --git a/src/qteletextdecoder/drcspage.cpp b/src/qteletextdecoder/drcspage.cpp index cabe518..f927610 100644 --- a/src/qteletextdecoder/drcspage.cpp +++ b/src/qteletextdecoder/drcspage.cpp @@ -36,6 +36,16 @@ DRCSPage::DRCSPage(const PageBase &other) setControlBit(b, other.controlBit(b)); } +PageBase::PageFunctionEnum DRCSPage::pageFunction() const +{ + return PFGlobalPOP; +} + +PageBase::PacketCodingEnum DRCSPage::packetCoding() const +{ + return Coding7bit; +} + int DRCSPage::drcsMode(int c) const { if (!packetExists(28, 3)) diff --git a/src/qteletextdecoder/drcspage.h b/src/qteletextdecoder/drcspage.h index 738981d..4bc1070 100644 --- a/src/qteletextdecoder/drcspage.h +++ b/src/qteletextdecoder/drcspage.h @@ -30,8 +30,8 @@ public: DRCSPage(const PageBase &other); // TODO PFNormalPOP as well? - PageFunctionEnum pageFunction() const { return PFGlobalPOP; } - PacketCodingEnum packetCoding() const override { return Coding7bit; } + PageFunctionEnum pageFunction() const; + PacketCodingEnum packetCoding() const; int drcsMode(int c) const; bool ptu(int c, uchar *data) const; diff --git a/src/qteletextdecoder/levelonepage.cpp b/src/qteletextdecoder/levelonepage.cpp index c8e9935..46e0ac7 100644 --- a/src/qteletextdecoder/levelonepage.cpp +++ b/src/qteletextdecoder/levelonepage.cpp @@ -80,6 +80,16 @@ void LevelOnePage::clearPage() // If clearPage() is called outside constructor, we need to implement m_enhancements.clear(); } +PageBase::PageFunctionEnum LevelOnePage::pageFunction() const +{ + return PFLevelOnePage; +} + +PageBase::PacketCodingEnum LevelOnePage::packetCoding() const +{ + return Coding7bit; +} + bool LevelOnePage::isEmpty() const { if (!m_enhancements.isEmpty()) @@ -295,10 +305,47 @@ bool LevelOnePage::setControlBit(int b, bool active) return PageX26Base::setControlBit(b, active); } +int LevelOnePage::maxEnhancements() const +{ + return 208; +} + /* void LevelOnePage::setSubPageNumber(int newSubPageNumber) { m_subPageNumber = newSubPageNumber; } */ -void LevelOnePage::setCycleValue(int newValue) { m_cycleValue = newValue; }; -void LevelOnePage::setCycleType(CycleTypeEnum newType) { m_cycleType = newType; } -void LevelOnePage::setDefaultCharSet(int newDefaultCharSet) { m_defaultCharSet = newDefaultCharSet; } + +int LevelOnePage::cycleValue() const +{ + return m_cycleValue; +} + +void LevelOnePage::setCycleValue(int newValue) +{ + m_cycleValue = newValue; +} + +LevelOnePage::CycleTypeEnum LevelOnePage::cycleType() const +{ + return m_cycleType; +} + +void LevelOnePage::setCycleType(CycleTypeEnum newType) +{ + m_cycleType = newType; +} + +int LevelOnePage::defaultCharSet() const +{ + return m_defaultCharSet; +} + +void LevelOnePage::setDefaultCharSet(int newDefaultCharSet) +{ + m_defaultCharSet = newDefaultCharSet; +} + +int LevelOnePage::defaultNOS() const +{ + return m_defaultNOS; +} void LevelOnePage::setDefaultNOS(int defaultNOS) { @@ -309,6 +356,11 @@ void LevelOnePage::setDefaultNOS(int defaultNOS) PageX26Base::setControlBit(C14NOS, m_defaultNOS & 0x4); } +int LevelOnePage::secondCharSet() const +{ + return m_secondCharSet; +} + void LevelOnePage::setSecondCharSet(int newSecondCharSet) { m_secondCharSet = newSecondCharSet; @@ -316,8 +368,18 @@ void LevelOnePage::setSecondCharSet(int newSecondCharSet) m_secondNOS = 0x7; } +int LevelOnePage::secondNOS() const +{ + return m_secondNOS; +} + void LevelOnePage::setSecondNOS(int newSecondNOS) { m_secondNOS = newSecondNOS; } +unsigned char LevelOnePage::character(int r, int c) const +{ + return PageX26Base::packetExists(r) ? PageX26Base::packet(r).at(c) : 0x20; +} + void LevelOnePage::setCharacter(int r, int c, unsigned char newCharacter) { QByteArray pkt; @@ -338,10 +400,45 @@ void LevelOnePage::setCharacter(int r, int c, unsigned char 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 LevelOnePage::defaultScreenColour() const +{ + return m_defaultScreenColour; +} + +void LevelOnePage::setDefaultScreenColour(int newDefaultScreenColour) +{ + m_defaultScreenColour = newDefaultScreenColour; +} + +int LevelOnePage::defaultRowColour() const +{ + return m_defaultRowColour; +} + +void LevelOnePage::setDefaultRowColour(int newDefaultRowColour) +{ + m_defaultRowColour = newDefaultRowColour; +} + +int LevelOnePage::colourTableRemap() const +{ + return m_colourTableRemap; +} + +void LevelOnePage::setColourTableRemap(int newColourTableRemap) +{ + m_colourTableRemap = newColourTableRemap; +} + +bool LevelOnePage::blackBackgroundSubst() const +{ + return m_blackBackgroundSubst; +} + +void LevelOnePage::setBlackBackgroundSubst(bool newBlackBackgroundSubst) +{ + m_blackBackgroundSubst = newBlackBackgroundSubst; +} int LevelOnePage::CLUT(int index, int renderLevel) const { @@ -552,36 +649,101 @@ int LevelOnePage::levelRequired() const return levelSeen; } -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; } +bool LevelOnePage::leftSidePanelDisplayed() const +{ + return m_leftSidePanelDisplayed; +} + +void LevelOnePage::setLeftSidePanelDisplayed(bool newLeftSidePanelDisplayed) +{ + m_leftSidePanelDisplayed = newLeftSidePanelDisplayed; +} + +bool LevelOnePage::rightSidePanelDisplayed() const +{ + return m_rightSidePanelDisplayed; +} + +void LevelOnePage::setRightSidePanelDisplayed(bool newRightSidePanelDisplayed) +{ + m_rightSidePanelDisplayed = newRightSidePanelDisplayed; +} + +int LevelOnePage::sidePanelColumns() const +{ + return m_sidePanelColumns; +} + +void LevelOnePage::setSidePanelColumns(int newSidePanelColumns) +{ + m_sidePanelColumns = newSidePanelColumns; +} + +bool LevelOnePage::sidePanelStatusL25() const +{ + return m_sidePanelStatusL25; +} + +void LevelOnePage::setSidePanelStatusL25(bool newSidePanelStatusL25) +{ + m_sidePanelStatusL25 = newSidePanelStatusL25; +} + +int LevelOnePage::fastTextLinkPageNumber(int linkNumber) const +{ + return m_fastTextLink[linkNumber].pageNumber; +} void LevelOnePage::setFastTextLinkPageNumber(int linkNumber, int pageNumber) { m_fastTextLink[linkNumber].pageNumber = pageNumber; } +int LevelOnePage::composeLinkFunction(int linkNumber) const +{ + return m_composeLink[linkNumber].function; +} + void LevelOnePage::setComposeLinkFunction(int linkNumber, int newFunction) { m_composeLink[linkNumber].function = newFunction; } +bool LevelOnePage::composeLinkLevel2p5(int linkNumber) const +{ + return m_composeLink[linkNumber].level2p5; +} + void LevelOnePage::setComposeLinkLevel2p5(int linkNumber, bool newRequired) { m_composeLink[linkNumber].level2p5 = newRequired; } +bool LevelOnePage::composeLinkLevel3p5(int linkNumber) const +{ + return m_composeLink[linkNumber].level3p5; +} + void LevelOnePage::setComposeLinkLevel3p5(int linkNumber, bool newRequired) { m_composeLink[linkNumber].level3p5 = newRequired; } +int LevelOnePage::composeLinkPageNumber(int linkNumber) const +{ + return m_composeLink[linkNumber].pageNumber; +} + void LevelOnePage::setComposeLinkPageNumber(int linkNumber, int newPageNumber) { m_composeLink[linkNumber].pageNumber = newPageNumber; } +int LevelOnePage::composeLinkSubPageCodes(int linkNumber) const +{ + return m_composeLink[linkNumber].subPageCodes; +} + void LevelOnePage::setComposeLinkSubPageCodes(int linkNumber, int newSubPageCodes) { m_composeLink[linkNumber].subPageCodes = newSubPageCodes; diff --git a/src/qteletextdecoder/levelonepage.h b/src/qteletextdecoder/levelonepage.h index 7649acc..d05e72e 100644 --- a/src/qteletextdecoder/levelonepage.h +++ b/src/qteletextdecoder/levelonepage.h @@ -42,8 +42,8 @@ public: LevelOnePage(); LevelOnePage(const PageBase &other); - PageFunctionEnum pageFunction() const override { return PFLevelOnePage; } - PacketCodingEnum packetCoding() const override { return Coding7bit; } + PageFunctionEnum pageFunction() const override; + PacketCodingEnum packetCoding() const override; bool isEmpty() const override; @@ -55,30 +55,30 @@ public: void clearPage(); - int maxEnhancements() const override { return 208; }; + int maxEnhancements() const override; /* void setSubPageNumber(int); */ - int cycleValue() const { return m_cycleValue; }; + int cycleValue() const; void setCycleValue(int newValue); - CycleTypeEnum cycleType() const { return m_cycleType; }; + CycleTypeEnum cycleType() const; void setCycleType(CycleTypeEnum newType); - int defaultCharSet() const { return m_defaultCharSet; } + int defaultCharSet() const; void setDefaultCharSet(int newDefaultCharSet); - int defaultNOS() const { return m_defaultNOS; } + int defaultNOS() const; void setDefaultNOS(int defaultNOS); - int secondCharSet() const { return m_secondCharSet; } + int secondCharSet() const; void setSecondCharSet(int newSecondCharSet); - int secondNOS() const { return m_secondNOS; } + int secondNOS() const; void setSecondNOS(int newSecondNOS); - unsigned char character(int r, int c) const { return PageX26Base::packetExists(r) ? PageX26Base::packet(r).at(c) : 0x20; } + unsigned char character(int r, int c) const; void setCharacter(int r, int c, unsigned char newChar); - int defaultScreenColour() const { return m_defaultScreenColour; } + int defaultScreenColour() const; void setDefaultScreenColour(int newDefaultScreenColour); - int defaultRowColour() const { return m_defaultRowColour; } + int defaultRowColour() const; void setDefaultRowColour(int newDefaultRowColour); - int colourTableRemap() const { return m_colourTableRemap; } + int colourTableRemap() const; void setColourTableRemap(int newColourTableRemap); - bool blackBackgroundSubst() const { return m_blackBackgroundSubst; } + bool blackBackgroundSubst() const; void setBlackBackgroundSubst(bool newBlackBackgroundSubst); int CLUT(int index, int renderLevel=3) const; void setCLUT(int index, int newColour); @@ -88,25 +88,25 @@ public: int dCLUT(bool globalDrcs, int mode, int index) const; void setDCLUT(bool globalDrcs, int mode, int index, int colour); int levelRequired() const; - bool leftSidePanelDisplayed() const { return m_leftSidePanelDisplayed; } + bool leftSidePanelDisplayed() const; void setLeftSidePanelDisplayed(bool newLeftSidePanelDisplayed); - bool rightSidePanelDisplayed() const { return m_rightSidePanelDisplayed; } + bool rightSidePanelDisplayed() const; void setRightSidePanelDisplayed(bool newRightSidePanelDisplayed); - int sidePanelColumns() const { return m_sidePanelColumns; } + int sidePanelColumns() const; void setSidePanelColumns(int newSidePanelColumns); - bool sidePanelStatusL25() const { return m_sidePanelStatusL25; } + bool sidePanelStatusL25() const; void setSidePanelStatusL25(bool newSidePanelStatusL25); - int fastTextLinkPageNumber(int linkNumber) const { return m_fastTextLink[linkNumber].pageNumber; } + int fastTextLinkPageNumber(int linkNumber) const; void setFastTextLinkPageNumber(int linkNumber, int pageNumber); - int composeLinkFunction(int linkNumber) const { return m_composeLink[linkNumber].function; } + int composeLinkFunction(int linkNumber) const; void setComposeLinkFunction(int linkNumber, int newFunction); - bool composeLinkLevel2p5(int linkNumber) const { return m_composeLink[linkNumber].level2p5; } + bool composeLinkLevel2p5(int linkNumber) const; void setComposeLinkLevel2p5(int linkNumber, bool newRequired); - bool composeLinkLevel3p5(int linkNumber) const { return m_composeLink[linkNumber].level3p5; } + bool composeLinkLevel3p5(int linkNumber) const; void setComposeLinkLevel3p5(int linkNumber, bool newRequired); - int composeLinkPageNumber(int linkNumber) const { return m_composeLink[linkNumber].pageNumber; } + int composeLinkPageNumber(int linkNumber) const; void setComposeLinkPageNumber(int linkNumber, int newPageNumber); - int composeLinkSubPageCodes(int linkNumber) const { return m_composeLink[linkNumber].subPageCodes; } + int composeLinkSubPageCodes(int linkNumber) const; void setComposeLinkSubPageCodes(int linkNumber, int newSubPageCodes); private: diff --git a/src/qteletextdecoder/pagebase.cpp b/src/qteletextdecoder/pagebase.cpp index 69ff112..47e959f 100644 --- a/src/qteletextdecoder/pagebase.cpp +++ b/src/qteletextdecoder/pagebase.cpp @@ -27,6 +27,16 @@ PageBase::PageBase() m_controlBits[b] = false; } +PageBase::PageFunctionEnum PageBase::pageFunction() const +{ + return PFUnknown; +} + +PageBase::PacketCodingEnum PageBase::packetCoding() const +{ + return CodingUnknown; +} + bool PageBase::isEmpty() const { for (int y=0; y<26; y++) @@ -40,6 +50,16 @@ bool PageBase::isEmpty() const return true; } +QByteArray PageBase::packet(int y) const +{ + return m_displayPackets[y]; +} + +QByteArray PageBase::packet(int y, int d) const +{ + return m_designationPackets[y-26][d]; +} + bool PageBase::setPacket(int y, QByteArray pkt) { m_displayPackets[y] = pkt; @@ -54,6 +74,16 @@ bool PageBase::setPacket(int y, int d, QByteArray pkt) return true; } +bool PageBase::packetExists(int y) const +{ + return !m_displayPackets[y].isEmpty(); +} + +bool PageBase::packetExists(int y, int d) const +{ + return !m_designationPackets[y-26][d].isEmpty(); +} + bool PageBase::clearPacket(int y) { m_displayPackets[y] = QByteArray(); @@ -77,6 +107,11 @@ void PageBase::clearAllPackets() clearPacket(y, d); } +bool PageBase::controlBit(int b) const +{ + return m_controlBits[b]; +} + bool PageBase::setControlBit(int b, bool active) { m_controlBits[b] = active; diff --git a/src/qteletextdecoder/pagebase.h b/src/qteletextdecoder/pagebase.h index ad7075c..3641d7a 100644 --- a/src/qteletextdecoder/pagebase.h +++ b/src/qteletextdecoder/pagebase.h @@ -22,11 +22,8 @@ #include -// 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 PageBase //: public QObject +class PageBase { - //Q_OBJECT - public: enum ControlBitsEnum { C4ErasePage, C5Newsflash, C6Subtitle, C7SuppressHeader, C8Update, C9InterruptedSequence, C10InhibitDisplay, C11SerialMagazine, C12NOS, C13NOS, C14NOS }; // Available Page Functions according to 9.4.2.1 of the spec @@ -36,22 +33,22 @@ public: PageBase(); - virtual PageFunctionEnum pageFunction() const { return PFUnknown; } - virtual PacketCodingEnum packetCoding() const { return CodingUnknown; } + virtual PageFunctionEnum pageFunction() const; + virtual PacketCodingEnum packetCoding() const; virtual bool isEmpty() const; - virtual QByteArray packet(int y) const { return m_displayPackets[y]; } - virtual QByteArray packet(int y, int d) const { return m_designationPackets[y-26][d]; } + virtual QByteArray packet(int y) const; + virtual QByteArray packet(int y, int d) const; virtual bool setPacket(int y, QByteArray pkt); virtual bool setPacket(int y, int d, QByteArray pkt); - virtual bool packetExists(int y) const { return !m_displayPackets[y].isEmpty(); } - virtual bool packetExists(int y, int d) const { return !m_designationPackets[y-26][d].isEmpty(); } + virtual bool packetExists(int y) const; + virtual bool packetExists(int y, int d) const ; virtual bool clearPacket(int y); virtual bool clearPacket(int y, int d); virtual void clearAllPackets(); - virtual bool controlBit(int b) const { return m_controlBits[b]; } + virtual bool controlBit(int b) const; virtual bool setControlBit(int b, bool active); private: diff --git a/src/qteletextdecoder/pagex26base.cpp b/src/qteletextdecoder/pagex26base.cpp index cb86c06..fdb7048 100644 --- a/src/qteletextdecoder/pagex26base.cpp +++ b/src/qteletextdecoder/pagex26base.cpp @@ -21,6 +21,11 @@ #include "pagex26base.h" +X26TripletList *PageX26Base::enhancements() +{ + return &m_enhancements; +} + QByteArray PageX26Base::packetFromEnhancementList(int p) const { QByteArray result(40, 0x00); @@ -79,3 +84,8 @@ void PageX26Base::setEnhancementListFromPacket(int p, QByteArray pkt) while (m_enhancements.size()>1 && m_enhancements.at(m_enhancements.size()-2).mode() == 0x1f && m_enhancements.at(m_enhancements.size()-2).address() == 0x3f && m_enhancements.at(m_enhancements.size()-2).data() == newX26Triplet.data()) m_enhancements.removeLast(); } + +bool PageX26Base::packetFromEnhancementListNeeded(int n) const +{ + return ((m_enhancements.size()+12) / 13) > n; +} diff --git a/src/qteletextdecoder/pagex26base.h b/src/qteletextdecoder/pagex26base.h index 8d5fe1f..81cdefb 100644 --- a/src/qteletextdecoder/pagex26base.h +++ b/src/qteletextdecoder/pagex26base.h @@ -26,18 +26,16 @@ #include "pagebase.h" #include "x26triplets.h" -class PageX26Base : public PageBase //: public QObject +class PageX26Base : public PageBase { - //Q_OBJECT - public: - X26TripletList *enhancements() { return &m_enhancements; }; + X26TripletList *enhancements(); virtual int maxEnhancements() const =0; protected: QByteArray packetFromEnhancementList(int p) const; void setEnhancementListFromPacket(int p, QByteArray pkt); - bool packetFromEnhancementListNeeded(int n) const { return ((m_enhancements.size()+12) / 13) > n; }; + bool packetFromEnhancementListNeeded(int n) const; X26TripletList m_enhancements; }; diff --git a/src/qteletextdecoder/x26triplets.cpp b/src/qteletextdecoder/x26triplets.cpp index 37c2553..cae0628 100644 --- a/src/qteletextdecoder/x26triplets.cpp +++ b/src/qteletextdecoder/x26triplets.cpp @@ -26,6 +26,41 @@ X26Triplet::X26Triplet(int address, int mode, int data) m_data = data; } +int X26Triplet::address() const +{ + return m_address; +} + +int X26Triplet::mode() const +{ + return m_mode; +} + +int X26Triplet::modeExt() const +{ + return (m_address >= 40) ? m_mode : (m_mode | 0x20); +} + +int X26Triplet::data() const +{ + return m_data; +} + +int X26Triplet::addressRow() const +{ + return (m_address == 40) ? 24 :m_address-40; +} + +int X26Triplet::addressColumn() const +{ + return (m_address); +} + +bool X26Triplet::isRowTriplet() const +{ + return (m_address >= 40); +} + void X26Triplet::setAddress(int address) { m_address = address; @@ -51,6 +86,26 @@ void X26Triplet::setAddressColumn(int addressColumn) m_address = addressColumn; } +int X26Triplet::objectSource() const +{ + return (m_address & 0x18) >> 3; +} + +int X26Triplet::objectLocalDesignationCode() const +{ + return (((m_address & 0x01) << 3) | (m_data >> 4)); +} + +int X26Triplet::objectLocalTripletNumber() const +{ + return m_data & 0x0f; +} + +int X26Triplet::objectLocalIndex() const +{ + return objectLocalDesignationCode() * 13 + objectLocalTripletNumber(); +} + void X26Triplet::setObjectLocalDesignationCode(int i) { m_address = (m_address & 0x38) | (i >> 3); @@ -68,6 +123,46 @@ void X26Triplet::setObjectLocalIndex(int i) m_data = (((i / 13) & 0x07) << 4) | (i % 13); } +int X26Triplet::activePositionRow() const +{ + return m_activePositionRow; +} + +int X26Triplet::activePositionColumn() const +{ + return m_activePositionColumn; +} + +int X26Triplet::activePositionRow1p5() const +{ + return m_activePositionRow1p5; +} + +int X26Triplet::activePositionColumn1p5() const +{ + return m_activePositionColumn1p5; +} + +X26Triplet::X26TripletError X26Triplet::error() const +{ + return m_error; +} + +bool X26Triplet::reservedMode() const +{ + return m_reservedMode; +} + +bool X26Triplet::reservedData() const +{ + return m_reservedData; +} + +bool X26Triplet::activePosition1p5Differs() const +{ + return m_activePosition1p5Differs; +} + void X26TripletList::updateInternalData() { @@ -282,6 +377,35 @@ void X26TripletList::replace(int i, const X26Triplet &value) updateInternalData(); } +void X26TripletList::removeLast() +{ + m_list.removeLast(); +} + +const X26Triplet &X26TripletList::at(int i) const +{ + return m_list.at(i); +} + +bool X26TripletList::isEmpty() const +{ + return m_list.isEmpty(); +} + +void X26TripletList::reserve(int alloc) +{ + m_list.reserve(alloc); +} + +int X26TripletList::size() const +{ + return m_list.size(); +} + +const QList &X26TripletList::objects(int t) const +{ + return m_objects[t]; +}; X26TripletList::ActivePosition::ActivePosition() { @@ -293,6 +417,21 @@ void X26TripletList::ActivePosition::reset() m_row = m_column = -1; } +int X26TripletList::ActivePosition::row() const +{ + return m_row; // return (m_row == -1) ? 0 : m_row; +} + +int X26TripletList::ActivePosition::column() const +{ + return m_column; // return (m_column == -1) ? 0 : m_column; +} + +bool X26TripletList::ActivePosition::isDeployed() const +{ + return m_row != -1; +} + bool X26TripletList::ActivePosition::setRow(int row) { if (row < m_row) diff --git a/src/qteletextdecoder/x26triplets.h b/src/qteletextdecoder/x26triplets.h index 058b27f..f8b48a4 100644 --- a/src/qteletextdecoder/x26triplets.h +++ b/src/qteletextdecoder/x26triplets.h @@ -36,13 +36,13 @@ public: X26Triplet(int address, int mode, int data); - int address() const { return m_address; } - int mode() const { return m_mode; } - int modeExt() const { return (m_address >= 40) ? m_mode : (m_mode | 0x20); } - int data() const { return m_data; } - int addressRow() const { return (m_address == 40) ? 24 :m_address-40; } - int addressColumn() const { return (m_address); } - bool isRowTriplet() const { return (m_address >= 40); } + int address() const; + int mode() const; + int modeExt() const; + int data() const; + int addressRow() const; + int addressColumn() const; + bool isRowTriplet() const; void setAddress(int address); void setMode(int mode); @@ -50,23 +50,23 @@ public: void setAddressRow(int addressRow); void setAddressColumn(int addressColumn); - int objectSource() const { return (m_address & 0x18) >> 3; } + int objectSource() const; - int objectLocalDesignationCode() const { return (((m_address & 0x01) << 3) | (m_data >> 4)); } - int objectLocalTripletNumber() const { return m_data & 0x0f; } - int objectLocalIndex() const { return objectLocalDesignationCode() * 13 + objectLocalTripletNumber(); } + int objectLocalDesignationCode() const; + int objectLocalTripletNumber() const; + int objectLocalIndex() const; void setObjectLocalDesignationCode(int i); void setObjectLocalTripletNumber(int i); void setObjectLocalIndex(int i); - int activePositionRow() const { return m_activePositionRow; } - int activePositionColumn() const { return m_activePositionColumn; } - int activePositionRow1p5() const { return m_activePositionRow1p5; } - int activePositionColumn1p5() const { return m_activePositionColumn1p5; } - X26TripletError error() const { return m_error; } - bool reservedMode() const { return m_reservedMode; } - bool reservedData() const { return m_reservedData; } - bool activePosition1p5Differs() const { return m_activePosition1p5Differs; } + int activePositionRow() const; + int activePositionColumn() const; + int activePositionRow1p5() const; + int activePositionColumn1p5() const; + X26TripletError error() const; + bool reservedMode() const; + bool reservedData() const; + bool activePosition1p5Differs() const; friend class X26TripletList; @@ -91,14 +91,13 @@ public: void insert(int i, const X26Triplet &value); void removeAt(int i); void replace(int i, const X26Triplet &value); + void removeLast(); + const X26Triplet &at(int i) const; + bool isEmpty() const; + void reserve(int alloc); + int size() const; - 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(); } - const QList &objects(int t) const { return m_objects[t]; }; + const QList &objects(int t) const; private: void updateInternalData(); @@ -111,11 +110,9 @@ private: public: ActivePosition(); void reset(); -// int row() const { return (m_row == -1) ? 0 : m_row; } -// int column() const { return (m_column == -1) ? 0 : m_column; } - int row() const { return m_row; } - int column() const { return m_column; } - bool isDeployed() const { return m_row != -1; } + int row() const; + int column() const; + bool isDeployed() const; bool setRow(int); bool setColumn(int); // bool setRowAndColumn(int, int);