Mercurial > hg > svgui
comparison layer/SpectrogramLayer.cpp @ 1562:3b45788b7804 spectrogram-export
Provide parameters needed for scale and thresholding
| author | Chris Cannam |
|---|---|
| date | Thu, 09 Jan 2020 14:35:41 +0000 |
| parents | 745be36202aa |
| children |
comparison
equal
deleted
inserted
replaced
| 1561:d6f9fac336b3 | 1562:3b45788b7804 |
|---|---|
| 144 } | 144 } |
| 145 | 145 |
| 146 ModelId | 146 ModelId |
| 147 SpectrogramLayer::getExportModel(LayerGeometryProvider *v) const | 147 SpectrogramLayer::getExportModel(LayerGeometryProvider *v) const |
| 148 { | 148 { |
| 149 //!!! Creating Colour3DPlotExporters is cheap, so perhaps we | 149 // Creating Colour3DPlotExporters is cheap, so we create one on |
| 150 // should create one on every call - calls probably being | 150 // every call - calls probably being infrequent - to avoid having |
| 151 // infrequent - to avoid having to worry about view lifecycles. We | 151 // to worry about view lifecycles. We can't delete them on the |
| 152 // can't delete them on the same call of course as we need to | 152 // same call of course as we need to return a valid id, so we push |
| 153 // return a valid id, so we could push them onto a list that then | 153 // them onto a list that then gets cleared (with calls to |
| 154 // gets cleared (with calls to | |
| 155 // Colour3DPlotExporter::discardSources() and | 154 // Colour3DPlotExporter::discardSources() and |
| 156 // ModelById::release()) in deleteDerivedModels() | 155 // ModelById::release()) in deleteDerivedModels(). |
| 157 | 156 |
| 158 Colour3DPlotExporter::Sources sources; | 157 Colour3DPlotExporter::Sources sources; |
| 159 sources.verticalBinLayer = this; | 158 sources.verticalBinLayer = this; |
| 160 sources.fft = m_fftModel; | 159 sources.fft = m_fftModel; |
| 161 sources.source = sources.fft; | 160 sources.source = sources.fft; |
| 162 sources.provider = v; | 161 sources.provider = v; |
| 163 | 162 |
| 164 Colour3DPlotExporter::Parameters params; | 163 Colour3DPlotExporter::Parameters params; |
| 165 params.binDisplay = m_binDisplay; | 164 params.binDisplay = m_binDisplay; |
| 165 params.scaleFactor = 1.0; | |
| 166 if (m_colourScale != ColourScaleType::Phase && | |
| 167 m_normalization != ColumnNormalization::Hybrid) { | |
| 168 params.scaleFactor *= 2.f / float(getWindowSize()); | |
| 169 } | |
| 170 params.threshold = m_threshold; // matching ColourScale in getRenderer | |
| 171 params.gain = m_gain; // matching ColourScale in getRenderer | |
| 172 params.normalization = m_normalization; | |
| 166 | 173 |
| 167 ModelId exporter = ModelById::add | 174 ModelId exporter = ModelById::add |
| 168 (std::make_shared<Colour3DPlotExporter>(sources, params)); | 175 (std::make_shared<Colour3DPlotExporter>(sources, params)); |
| 169 m_exporters.push_back(exporter); | 176 m_exporters.push_back(exporter); |
| 170 return exporter; | 177 return exporter; |
