Mercurial > hg > svcore
diff data/model/Dense3DModelPeakCache.h @ 1206:659372323b45 tony-2.0-integration
Merge latest SV 3.0 branch code
author | Chris Cannam |
---|---|
date | Fri, 19 Aug 2016 15:58:57 +0100 |
parents | 9884efa1f88a |
children | df59bf0b4236 |
line wrap: on
line diff
--- a/data/model/Dense3DModelPeakCache.h Tue Oct 20 12:54:06 2015 +0100 +++ b/data/model/Dense3DModelPeakCache.h Fri Aug 19 15:58:57 2016 +0100 @@ -13,19 +13,18 @@ COPYING included with this distribution for more information. */ -#ifndef _DENSE_3D_MODEL_PEAK_CACHE_H_ -#define _DENSE_3D_MODEL_PEAK_CACHE_H_ +#ifndef DENSE_3D_MODEL_PEAK_CACHE_H +#define DENSE_3D_MODEL_PEAK_CACHE_H #include "DenseThreeDimensionalModel.h" #include "EditableDenseThreeDimensionalModel.h" -#include "base/ResizeableBitset.h" class Dense3DModelPeakCache : public DenseThreeDimensionalModel { Q_OBJECT public: - Dense3DModelPeakCache(DenseThreeDimensionalModel *source, + Dense3DModelPeakCache(const DenseThreeDimensionalModel *source, int columnsPerPeak); ~Dense3DModelPeakCache(); @@ -46,11 +45,20 @@ } virtual int getResolution() const { - return m_source->getResolution() * m_resolution; + return m_source->getResolution() * m_columnsPerPeak; } + virtual int getColumnsPerPeak() const { + return m_columnsPerPeak; + } + virtual int getWidth() const { - return m_source->getWidth() / m_resolution + 1; + int sourceWidth = m_source->getWidth(); + if ((sourceWidth % m_columnsPerPeak) == 0) { + return sourceWidth / m_columnsPerPeak; + } else { + return sourceWidth / m_columnsPerPeak + 1; + } } virtual int getHeight() const { @@ -65,8 +73,6 @@ return m_source->getMaximumLevel(); } - virtual bool isColumnAvailable(int column) const; - virtual Column getColumn(int column) const; virtual float getValueAt(int column, int n) const; @@ -90,10 +96,11 @@ void sourceModelAboutToBeDeleted(); private: - DenseThreeDimensionalModel *m_source; + const DenseThreeDimensionalModel *m_source; mutable EditableDenseThreeDimensionalModel *m_cache; - mutable ResizeableBitset m_coverage; - int m_resolution; + mutable std::vector<bool> m_coverage; // must be bool, for space efficiency + // (vector of bool uses 1-bit elements) + int m_columnsPerPeak; bool haveColumn(int column) const; void fillColumn(int column) const;