annotate data/model/Dense3DModelPeakCache.h @ 1153:ece369c5bb68 3.0-integration

Don't need ResizeableBitset, vector<bool> is already a compact format
author Chris Cannam
date Fri, 22 Jan 2016 12:46:42 +0000
parents 0fd3661bcfff
children 546d4e417346
rev   line source
Chris@545 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@545 2
Chris@545 3 /*
Chris@545 4 Sonic Visualiser
Chris@545 5 An audio file viewer and annotation editor.
Chris@545 6 Centre for Digital Music, Queen Mary, University of London.
Chris@545 7 This file copyright 2009 QMUL.
Chris@545 8
Chris@545 9 This program is free software; you can redistribute it and/or
Chris@545 10 modify it under the terms of the GNU General Public License as
Chris@545 11 published by the Free Software Foundation; either version 2 of the
Chris@545 12 License, or (at your option) any later version. See the file
Chris@545 13 COPYING included with this distribution for more information.
Chris@545 14 */
Chris@545 15
Chris@545 16 #ifndef _DENSE_3D_MODEL_PEAK_CACHE_H_
Chris@545 17 #define _DENSE_3D_MODEL_PEAK_CACHE_H_
Chris@545 18
Chris@545 19 #include "DenseThreeDimensionalModel.h"
Chris@545 20 #include "EditableDenseThreeDimensionalModel.h"
Chris@545 21
Chris@545 22 class Dense3DModelPeakCache : public DenseThreeDimensionalModel
Chris@545 23 {
Chris@546 24 Q_OBJECT
Chris@546 25
Chris@545 26 public:
Chris@545 27 Dense3DModelPeakCache(DenseThreeDimensionalModel *source,
Chris@929 28 int columnsPerPeak);
Chris@545 29 ~Dense3DModelPeakCache();
Chris@545 30
Chris@546 31 virtual bool isOK() const {
Chris@546 32 return m_source && m_source->isOK();
Chris@546 33 }
Chris@546 34
Chris@1040 35 virtual sv_samplerate_t getSampleRate() const {
Chris@546 36 return m_source->getSampleRate();
Chris@546 37 }
Chris@546 38
Chris@1038 39 virtual sv_frame_t getStartFrame() const {
Chris@546 40 return m_source->getStartFrame();
Chris@546 41 }
Chris@546 42
Chris@1038 43 virtual sv_frame_t getEndFrame() const {
Chris@546 44 return m_source->getEndFrame();
Chris@546 45 }
Chris@546 46
Chris@929 47 virtual int getResolution() const {
Chris@545 48 return m_source->getResolution() * m_resolution;
Chris@545 49 }
Chris@545 50
Chris@929 51 virtual int getWidth() const {
Chris@545 52 return m_source->getWidth() / m_resolution + 1;
Chris@545 53 }
Chris@545 54
Chris@929 55 virtual int getHeight() const {
Chris@545 56 return m_source->getHeight();
Chris@545 57 }
Chris@545 58
Chris@545 59 virtual float getMinimumLevel() const {
Chris@545 60 return m_source->getMinimumLevel();
Chris@545 61 }
Chris@545 62
Chris@545 63 virtual float getMaximumLevel() const {
Chris@545 64 return m_source->getMaximumLevel();
Chris@545 65 }
Chris@545 66
Chris@929 67 virtual bool isColumnAvailable(int column) const;
Chris@545 68
Chris@929 69 virtual Column getColumn(int column) const;
Chris@545 70
Chris@929 71 virtual float getValueAt(int column, int n) const;
Chris@545 72
Chris@929 73 virtual QString getBinName(int n) const {
Chris@545 74 return m_source->getBinName(n);
Chris@545 75 }
Chris@545 76
Chris@545 77 virtual bool shouldUseLogValueScale() const {
Chris@545 78 return m_source->shouldUseLogValueScale();
Chris@545 79 }
Chris@545 80
Chris@545 81 QString getTypeName() const { return tr("Dense 3-D Peak Cache"); }
Chris@545 82
Chris@545 83 virtual int getCompletion() const {
Chris@545 84 return m_source->getCompletion();
Chris@545 85 }
Chris@545 86
Chris@545 87 protected slots:
Chris@545 88 void sourceModelChanged();
Chris@545 89 void sourceModelAboutToBeDeleted();
Chris@545 90
Chris@545 91 private:
Chris@545 92 DenseThreeDimensionalModel *m_source;
Chris@545 93 mutable EditableDenseThreeDimensionalModel *m_cache;
Chris@1153 94 mutable std::vector<bool> m_coverage; // must be bool, for space efficiency
Chris@1153 95 // (vector of bool uses 1-bit elements)
Chris@929 96 int m_resolution;
Chris@545 97
Chris@929 98 bool haveColumn(int column) const;
Chris@929 99 void fillColumn(int column) const;
Chris@545 100 };
Chris@545 101
Chris@545 102
Chris@545 103 #endif