comparison layer/SliceLayer.cpp @ 997:296ccd36f626 tony-2.0-integration

Merge through to branch for Tony 2.0
author Chris Cannam
date Thu, 20 Aug 2015 14:54:21 +0100
parents 4fe7a09be0fe
children ee01a4062747
comparison
equal deleted inserted replaced
943:788b7623bfca 997:296ccd36f626
90 setSliceableModel(0); 90 setSliceableModel(0);
91 } 91 }
92 } 92 }
93 93
94 QString 94 QString
95 SliceLayer::getFeatureDescription(View *v, QPoint &p) const 95 SliceLayer::getFeatureDescription(LayerGeometryProvider *v, QPoint &p) const
96 { 96 {
97 int minbin, maxbin, range; 97 int minbin, maxbin, range;
98 return getFeatureDescriptionAux(v, p, true, minbin, maxbin, range); 98 return getFeatureDescriptionAux(v, p, true, minbin, maxbin, range);
99 } 99 }
100 100
101 QString 101 QString
102 SliceLayer::getFeatureDescriptionAux(View *v, QPoint &p, 102 SliceLayer::getFeatureDescriptionAux(LayerGeometryProvider *v, QPoint &p,
103 bool includeBinDescription, 103 bool includeBinDescription,
104 int &minbin, int &maxbin, int &range) const 104 int &minbin, int &maxbin, int &range) const
105 { 105 {
106 minbin = 0; 106 minbin = 0;
107 maxbin = 0; 107 maxbin = 0;
108 if (!m_sliceableModel) return ""; 108 if (!m_sliceableModel) return "";
109 109
110 int xorigin = m_xorigins[v]; 110 int xorigin = m_xorigins[v];
111 int w = v->width() - xorigin - 1; 111 int w = v->getPaintWidth() - xorigin - 1;
112 112
113 int mh = m_sliceableModel->getHeight(); 113 int mh = m_sliceableModel->getHeight();
114 minbin = getBinForX(p.x() - xorigin, mh, w); 114 minbin = getBinForX(p.x() - xorigin, mh, w);
115 maxbin = getBinForX(p.x() - xorigin + 1, mh, w); 115 maxbin = getBinForX(p.x() - xorigin + 1, mh, w);
116 116
224 224
225 return bin; 225 return bin;
226 } 226 }
227 227
228 double 228 double
229 SliceLayer::getYForValue(double value, const View *v, double &norm) const 229 SliceLayer::getYForValue(double value, const LayerGeometryProvider *v, double &norm) const
230 { 230 {
231 norm = 0.0; 231 norm = 0.0;
232 232
233 if (m_yorigins.find(v) == m_yorigins.end()) return 0; 233 if (m_yorigins.find(v) == m_yorigins.end()) return 0;
234 234
274 274
275 return y; 275 return y;
276 } 276 }
277 277
278 double 278 double
279 SliceLayer::getValueForY(double y, const View *v) const 279 SliceLayer::getValueForY(double y, const LayerGeometryProvider *v) const
280 { 280 {
281 double value = 0.0; 281 double value = 0.0;
282 282
283 if (m_yorigins.find(v) == m_yorigins.end()) return value; 283 if (m_yorigins.find(v) == m_yorigins.end()) return value;
284 284
311 311
312 return value / m_gain; 312 return value / m_gain;
313 } 313 }
314 314
315 void 315 void
316 SliceLayer::paint(View *v, QPainter &paint, QRect rect) const 316 SliceLayer::paint(LayerGeometryProvider *v, QPainter &paint, QRect rect) const
317 { 317 {
318 if (!m_sliceableModel || !m_sliceableModel->isOK() || 318 if (!m_sliceableModel || !m_sliceableModel->isOK() ||
319 !m_sliceableModel->isReady()) return; 319 !m_sliceableModel->isReady()) return;
320 320
321 paint.save(); 321 paint.save();
332 } 332 }
333 333
334 paint.setPen(getBaseQColor()); 334 paint.setPen(getBaseQColor());
335 335
336 int xorigin = getVerticalScaleWidth(v, true, paint) + 1; 336 int xorigin = getVerticalScaleWidth(v, true, paint) + 1;
337 int w = v->width() - xorigin - 1; 337 int w = v->getPaintWidth() - xorigin - 1;
338 338
339 m_xorigins[v] = xorigin; // for use in getFeatureDescription 339 m_xorigins[v] = xorigin; // for use in getFeatureDescription
340 340
341 int yorigin = v->height() - 20 - paint.fontMetrics().height() - 7; 341 int yorigin = v->getPaintHeight() - 20 - paint.fontMetrics().height() - 7;
342 int h = yorigin - paint.fontMetrics().height() - 8; 342 int h = yorigin - paint.fontMetrics().height() - 8;
343 343
344 m_yorigins[v] = yorigin; // for getYForValue etc 344 m_yorigins[v] = yorigin; // for getYForValue etc
345 m_heights[v] = h; 345 m_heights[v] = h;
346 346
499 } 499 }
500 */ 500 */
501 } 501 }
502 502
503 int 503 int
504 SliceLayer::getVerticalScaleWidth(View *, bool, QPainter &paint) const 504 SliceLayer::getVerticalScaleWidth(LayerGeometryProvider *, bool, QPainter &paint) const
505 { 505 {
506 if (m_energyScale == LinearScale || m_energyScale == AbsoluteScale) { 506 if (m_energyScale == LinearScale || m_energyScale == AbsoluteScale) {
507 return std::max(paint.fontMetrics().width("0.0") + 13, 507 return std::max(paint.fontMetrics().width("0.0") + 13,
508 paint.fontMetrics().width("x10-10")); 508 paint.fontMetrics().width("x10-10"));
509 } else { 509 } else {
511 paint.fontMetrics().width(tr("-Inf"))) + 13; 511 paint.fontMetrics().width(tr("-Inf"))) + 13;
512 } 512 }
513 } 513 }
514 514
515 void 515 void
516 SliceLayer::paintVerticalScale(View *v, bool, QPainter &paint, QRect rect) const 516 SliceLayer::paintVerticalScale(LayerGeometryProvider *v, bool, QPainter &paint, QRect rect) const
517 { 517 {
518 double thresh = m_threshold; 518 double thresh = m_threshold;
519 if (m_energyScale != LinearScale && m_energyScale != AbsoluteScale) { 519 if (m_energyScale != LinearScale && m_energyScale != AbsoluteScale) {
520 thresh = AudioLevel::dB_to_multiplier(getThresholdDb()); 520 thresh = AudioLevel::dB_to_multiplier(getThresholdDb());
521 } 521 }
522 522
523 // int h = (rect.height() * 3) / 4; 523 // int h = (rect.height() * 3) / 4;
524 // int y = (rect.height() / 2) - (h / 2); 524 // int y = (rect.height() / 2) - (h / 2);
525 525
526 int yorigin = v->height() - 20 - paint.fontMetrics().height() - 6; 526 int yorigin = v->getPaintHeight() - 20 - paint.fontMetrics().height() - 6;
527 int h = yorigin - paint.fontMetrics().height() - 8; 527 int h = yorigin - paint.fontMetrics().height() - 8;
528 if (h < 0) return; 528 if (h < 0) return;
529 529
530 QRect actual(rect.x(), rect.y() + yorigin - h, rect.width(), h); 530 QRect actual(rect.x(), rect.y() + yorigin - h, rect.width(), h);
531 531