Chris@189: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@189: Chris@189: /* Chris@189: Sonic Visualiser Chris@189: An audio file viewer and annotation editor. Chris@189: Centre for Digital Music, Queen Mary, University of London. Chris@189: This file copyright 2006 Chris Cannam. Chris@189: Chris@189: This program is free software; you can redistribute it and/or Chris@189: modify it under the terms of the GNU General Public License as Chris@189: published by the Free Software Foundation; either version 2 of the Chris@189: License, or (at your option) any later version. See the file Chris@189: COPYING included with this distribution for more information. Chris@189: */ Chris@189: Chris@189: #ifndef _RANGE_MAPPER_H_ Chris@189: #define _RANGE_MAPPER_H_ Chris@189: Chris@189: #include Chris@189: Chris@189: Chris@189: class RangeMapper Chris@189: { Chris@189: public: Chris@189: virtual ~RangeMapper() { } Chris@189: virtual int getPositionForValue(float value) const = 0; Chris@189: virtual float getValueForPosition(int position) const = 0; Chris@189: virtual QString getUnit() const { return ""; } Chris@189: }; Chris@189: Chris@189: Chris@189: class LinearRangeMapper : public RangeMapper Chris@189: { Chris@189: public: Chris@189: LinearRangeMapper(int minpos, int maxpos, Chris@189: float minval, float maxval, Chris@189: QString unit = ""); Chris@189: Chris@189: virtual int getPositionForValue(float value) const; Chris@189: virtual float getValueForPosition(int position) const; Chris@189: Chris@189: virtual QString getUnit() const { return m_unit; } Chris@189: Chris@189: protected: Chris@189: int m_minpos; Chris@189: int m_maxpos; Chris@189: float m_minval; Chris@189: float m_maxval; Chris@189: QString m_unit; Chris@189: }; Chris@189: Chris@189: Chris@189: class LogRangeMapper : public RangeMapper Chris@189: { Chris@189: public: Chris@189: LogRangeMapper(int minpos, int maxpos, Chris@189: float ratio, float minlog, Chris@189: QString m_unit = ""); Chris@189: Chris@189: virtual int getPositionForValue(float value) const; Chris@189: virtual float getValueForPosition(int position) const; Chris@189: Chris@189: virtual QString getUnit() const { return m_unit; } Chris@189: Chris@189: protected: Chris@189: int m_minpos; Chris@189: int m_maxpos; Chris@189: float m_ratio; Chris@189: float m_minlog; Chris@189: float m_maxlog; Chris@189: QString m_unit; Chris@189: }; Chris@189: Chris@189: Chris@189: #endif