Chris@1071: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@1071: Chris@1071: /* Chris@1071: Sonic Visualiser Chris@1071: An audio file viewer and annotation editor. Chris@1071: Centre for Digital Music, Queen Mary, University of London. Chris@1071: This file copyright 2006-2016 Chris Cannam and QMUL. Chris@1071: Chris@1071: This program is free software; you can redistribute it and/or Chris@1071: modify it under the terms of the GNU General Public License as Chris@1071: published by the Free Software Foundation; either version 2 of the Chris@1071: License, or (at your option) any later version. See the file Chris@1071: COPYING included with this distribution for more information. Chris@1071: */ Chris@1071: Chris@1071: #ifndef COLOUR_3D_PLOT_RENDERER_H Chris@1071: #define COLOUR_3D_PLOT_RENDERER_H Chris@1071: Chris@1071: #include "ColourScale.h" Chris@1071: Chris@1071: #include "base/ColumnOp.h" Chris@1071: Chris@1071: class DenseThreeDimensionalModel; Chris@1071: class Dense3DModelPeakCache; Chris@1071: class FFTModel; Chris@1071: Chris@1071: class Colour3DPlotRenderer Chris@1071: { Chris@1071: public: Chris@1071: enum BinDisplay { Chris@1071: AllBins, Chris@1071: PeakBins, Chris@1071: PeakFrequencies Chris@1071: }; Chris@1071: Chris@1071: enum BinScale { Chris@1071: LinearBinScale, Chris@1071: LogBinScale Chris@1071: }; Chris@1071: Chris@1071: struct Parameters { Chris@1071: Chris@1071: Parameters() : Chris@1071: source(0), peaks(0), fft(0), Chris@1071: colourScale(ColourScale::Parameters()), Chris@1071: normalization(ColumnOp::NoNormalization), Chris@1071: binDisplay(AllBins), binScale(LinearBinScale), Chris@1071: alwaysOpaque(false), interpolate(false), invertVertical(false) { } Chris@1071: Chris@1071: DenseThreeDimensionalModel *source; // always Chris@1071: Dense3DModelPeakCache *peaks; // optionally Chris@1071: FFTModel *fft; // optionally Chris@1071: Chris@1071: ColourScale colourScale; // complete ColourScale object by value Chris@1071: ColumnOp::Normalization normalization; Chris@1071: BinDisplay binDisplay; Chris@1071: BinScale binScale; Chris@1071: bool alwaysOpaque; Chris@1071: bool interpolate; Chris@1071: bool invertVertical; Chris@1071: }; Chris@1071: Chris@1071: Colour3DPlotRenderer(Parameters parameters) : Chris@1071: m_params(parameters) Chris@1071: { } Chris@1071: Chris@1071: private: Chris@1071: Parameters m_params; Chris@1071: }; Chris@1071: Chris@1071: #endif Chris@1071: