From df22fda2906aca17dc0d5d614bfbe673f13be95a Mon Sep 17 00:00:00 2001 From: "G.K.MacGregor" Date: Fri, 18 Dec 2020 22:07:27 +0000 Subject: [PATCH] Add function to check for default colours --- levelonepage.cpp | 46 +++++++++++++++++++++++++++---------------- levelonepage.h | 12 ++++++----- palettedockwidget.cpp | 14 +++---------- 3 files changed, 39 insertions(+), 33 deletions(-) diff --git a/levelonepage.cpp b/levelonepage.cpp index 754f4ec..5d35155 100644 --- a/levelonepage.cpp +++ b/levelonepage.cpp @@ -82,7 +82,7 @@ void LevelOnePage::clearPage() m_leftSidePanelDisplayed = m_rightSidePanelDisplayed = false; m_sidePanelStatusL25 = true; m_sidePanelColumns = 0; - std::copy(defaultCLUT, defaultCLUT+32, m_CLUT); + std::copy(m_defaultCLUT, m_defaultCLUT+32, m_CLUT); // If clearPage() is called outside constructor, we need to implement localEnhance.clear(); } @@ -91,9 +91,8 @@ bool LevelOnePage::isEmpty() const if (!localEnhance.isEmpty()) return false; - for (int i=0; i<32; i++) - if (m_CLUT[i] != defaultCLUT[i]) - return false; + if (!isPaletteDefault(0, 31)) + return false; for (int r=0; r<25; r++) for (int c=0; c<40; c++) @@ -348,17 +347,10 @@ bool LevelOnePage::packetNeeded(int packetNumber, int designationCode) const 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) return true; - for (int i=16; i<32; i++) - if (m_CLUT[i] != defaultCLUT[i]) - return true; - return false; - } - if (designationCode == 4) { - for (int i=0; i<16; i++) - if (m_CLUT[i] != defaultCLUT[i]) - return true; - return false; + return !isPaletteDefault(16, 31); } + if (designationCode == 4) + return !isPaletteDefault(0,15); } return PageBase::packetNeeded(packetNumber, designationCode); @@ -428,12 +420,32 @@ void LevelOnePage::setBlackBackgroundSubst(bool newBlackBackgroundSubst) { m_bla int LevelOnePage::CLUT(int index, int renderLevel) const { if (renderLevel == 2) - return index>=16 ? m_CLUT[index] : defaultCLUT[index]; + return index>=16 ? m_CLUT[index] : m_defaultCLUT[index]; else - return renderLevel==3 ? m_CLUT[index] : defaultCLUT[index]; + return renderLevel==3 ? m_CLUT[index] : m_defaultCLUT[index]; +} + +void LevelOnePage::setCLUT(int index, int newColour) +{ + if (index == 8) + return; + m_CLUT[index] = newColour; +} + +bool LevelOnePage::isPaletteDefault(int colour) const +{ + return m_CLUT[colour] == m_defaultCLUT[colour]; +} + +bool LevelOnePage::isPaletteDefault(int fromColour, int toColour) const +{ + for (int i=fromColour; isetStyleSheet(qss); - if (m_parentMainWidget->document()->currentSubPage()->CLUT(colourIndex) == m_parentMainWidget->document()->currentSubPage()->CLUT(colourIndex, 0)) { + if (m_parentMainWidget->document()->currentSubPage()->isPaletteDefault(colourIndex)) // Default colour was set, disable Reset button if all colours in row are default as well - for (int i=colourIndex & 0x18; i<(colourIndex & 0x18)+8; i++) { - if (i == 8) - continue; - if (m_parentMainWidget->document()->currentSubPage()->CLUT(i) != m_parentMainWidget->document()->currentSubPage()->CLUT(i, 0)) { - m_resetButton[colourIndex>>3]->setEnabled(true); - return; - } - } - m_resetButton[colourIndex>>3]->setEnabled(false); - } else + m_resetButton[colourIndex>>3]->setEnabled(!m_parentMainWidget->document()->currentSubPage()->isPaletteDefault(colourIndex & 0x18, colourIndex | 0x07)); + else m_resetButton[colourIndex>>3]->setEnabled(true); }