#include "Visualization/QCPColorMapIterator.h" #include QCPColorMapIterator::QCPColorMapIterator(QCPColorMapData *data, bool begin) : m_Data{data}, m_KeyIndex{begin ? 0 : data->keySize()}, m_ValueIndex{0} { updateValue(); } QCPColorMapIterator &QCPColorMapIterator::operator++() { // Increments indexes ++m_ValueIndex; if (m_ValueIndex == m_Data->valueSize()) { ++m_KeyIndex; m_ValueIndex = 0; } // Updates value updateValue(); return *this; } QCPColorMapIterator QCPColorMapIterator::operator++(int) { auto result = *this; this->operator++(); return result; } QCPColorMapIterator::pointer QCPColorMapIterator::operator->() const { return &m_Value; } QCPColorMapIterator::reference QCPColorMapIterator::operator*() const { return m_Value; } bool QCPColorMapIterator::operator==(const QCPColorMapIterator &other) { return std::tie(m_Data, m_KeyIndex, m_ValueIndex) == std::tie(other.m_Data, other.m_KeyIndex, other.m_ValueIndex); } bool QCPColorMapIterator::operator!=(const QCPColorMapIterator &other) { return !(*this == other); } void QCPColorMapIterator::updateValue() { m_Value = m_KeyIndex != m_Data->keySize() ? m_Data->cell(m_KeyIndex, m_ValueIndex) : std::numeric_limits::quiet_NaN(); }