annotate data/model/Dense3DModelPeakCache.h @ 545:c603d9439b37

* Add peak cache type for 3d models
author Chris Cannam
date Wed, 04 Feb 2009 13:33:50 +0000
parents
children 95391b480e17
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 #include "base/ResizeableBitset.h"
Chris@545 22
Chris@545 23 class Dense3DModelPeakCache : public DenseThreeDimensionalModel
Chris@545 24 {
Chris@545 25 public:
Chris@545 26 Dense3DModelPeakCache(DenseThreeDimensionalModel *source,
Chris@545 27 size_t columnsPerPeak);
Chris@545 28 ~Dense3DModelPeakCache();
Chris@545 29
Chris@545 30 virtual size_t getResolution() const {
Chris@545 31 return m_source->getResolution() * m_resolution;
Chris@545 32 }
Chris@545 33
Chris@545 34 virtual size_t getWidth() const {
Chris@545 35 return m_source->getWidth() / m_resolution + 1;
Chris@545 36 }
Chris@545 37
Chris@545 38 virtual size_t getHeight() const {
Chris@545 39 return m_source->getHeight();
Chris@545 40 }
Chris@545 41
Chris@545 42 virtual float getMinimumLevel() const {
Chris@545 43 return m_source->getMinimumLevel();
Chris@545 44 }
Chris@545 45
Chris@545 46 virtual float getMaximumLevel() const {
Chris@545 47 return m_source->getMaximumLevel();
Chris@545 48 }
Chris@545 49
Chris@545 50 virtual bool isColumnAvailable(size_t column) const;
Chris@545 51
Chris@545 52 virtual Column getColumn(size_t column) const;
Chris@545 53
Chris@545 54 virtual float getValueAt(size_t column, size_t n) const;
Chris@545 55
Chris@545 56 virtual QString getBinName(size_t n) const {
Chris@545 57 return m_source->getBinName(n);
Chris@545 58 }
Chris@545 59
Chris@545 60 virtual bool shouldUseLogValueScale() const {
Chris@545 61 return m_source->shouldUseLogValueScale();
Chris@545 62 }
Chris@545 63
Chris@545 64 QString getTypeName() const { return tr("Dense 3-D Peak Cache"); }
Chris@545 65
Chris@545 66 virtual int getCompletion() const {
Chris@545 67 return m_source->getCompletion();
Chris@545 68 }
Chris@545 69
Chris@545 70 protected slots:
Chris@545 71 void sourceModelChanged();
Chris@545 72 void sourceModelAboutToBeDeleted();
Chris@545 73
Chris@545 74 private:
Chris@545 75 DenseThreeDimensionalModel *m_source;
Chris@545 76 mutable EditableDenseThreeDimensionalModel *m_cache;
Chris@545 77 mutable ResizeableBitset m_coverage;
Chris@545 78 size_t m_resolution;
Chris@545 79
Chris@545 80 bool haveColumn(size_t column) const;
Chris@545 81 void fillColumn(size_t column) const;
Chris@545 82 };
Chris@545 83
Chris@545 84
Chris@545 85 #endif