Mercurial > hg > svgui
comparison layer/SliceLayer.cpp @ 254:a2ae3d93c645
* bit of work on harmonic cursor in spectrum
| author | Chris Cannam | 
|---|---|
| date | Mon, 11 Jun 2007 12:14:52 +0000 | 
| parents | 28c8e8e3c537 | 
| children | b9380f679f70 | 
   comparison
  equal
  deleted
  inserted
  replaced
| 253:1b1e6947c124 | 254:a2ae3d93c645 | 
|---|---|
| 34 m_energyScale(dBScale), | 34 m_energyScale(dBScale), | 
| 35 m_samplingMode(SampleMean), | 35 m_samplingMode(SampleMean), | 
| 36 m_plotStyle(PlotSteps), | 36 m_plotStyle(PlotSteps), | 
| 37 m_binScale(LinearBins), | 37 m_binScale(LinearBins), | 
| 38 m_normalize(false), | 38 m_normalize(false), | 
| 39 m_bias(false), | |
| 40 m_gain(1.0), | 39 m_gain(1.0), | 
| 41 m_currentf0(0), | 40 m_currentf0(0), | 
| 42 m_currentf1(0) | 41 m_currentf1(0) | 
| 43 { | 42 { | 
| 44 } | 43 } | 
| 227 } | 226 } | 
| 228 | 227 | 
| 229 void | 228 void | 
| 230 SliceLayer::paint(View *v, QPainter &paint, QRect rect) const | 229 SliceLayer::paint(View *v, QPainter &paint, QRect rect) const | 
| 231 { | 230 { | 
| 232 if (!m_sliceableModel) return; | 231 if (!m_sliceableModel || !m_sliceableModel->isOK() || | 
| 232 !m_sliceableModel->isReady()) return; | |
| 233 | 233 | 
| 234 paint.save(); | 234 paint.save(); | 
| 235 paint.setRenderHint(QPainter::Antialiasing, false); | 235 paint.setRenderHint(QPainter::Antialiasing, false); | 
| 236 | 236 | 
| 237 if (v->getViewManager() && v->getViewManager()->shouldShowScaleGuides()) { | 237 if (v->getViewManager() && v->getViewManager()->shouldShowScaleGuides()) { | 
| 285 f1 = (col1 + 1) * m_sliceableModel->getResolution() - 1; | 285 f1 = (col1 + 1) * m_sliceableModel->getResolution() - 1; | 
| 286 | 286 | 
| 287 m_currentf0 = f0; | 287 m_currentf0 = f0; | 
| 288 m_currentf1 = f1; | 288 m_currentf1 = f1; | 
| 289 | 289 | 
| 290 BiasCurve curve; | |
| 291 getBiasCurve(curve); | |
| 292 size_t cs = curve.size(); | |
| 293 | |
| 290 for (size_t col = col0; col <= col1; ++col) { | 294 for (size_t col = col0; col <= col1; ++col) { | 
| 291 for (size_t bin = 0; bin < mh; ++bin) { | 295 for (size_t bin = 0; bin < mh; ++bin) { | 
| 292 float value = m_sliceableModel->getValueAt(col, bin); | 296 float value = m_sliceableModel->getValueAt(col, bin); | 
| 293 if (m_bias) value *= bin + 1; | 297 if (bin < cs) value *= curve[bin]; | 
| 294 if (m_samplingMode == SamplePeak) { | 298 if (m_samplingMode == SamplePeak) { | 
| 295 if (value > m_values[bin]) m_values[bin] = value; | 299 if (value > m_values[bin]) m_values[bin] = value; | 
| 296 } else { | 300 } else { | 
| 297 m_values[bin] += value; | 301 m_values[bin] += value; | 
| 298 } | 302 } | 
