comparison layer/SpectrogramLayer.cpp @ 1091:ac10a087e045 spectrogram-minor-refactor

Time-constrained rendering
author Chris Cannam
date Thu, 07 Jul 2016 11:24:28 +0100
parents c8c747783110
children 9b826dd23c84
comparison
equal deleted inserted replaced
1090:c8c747783110 1091:ac10a087e045
1534 void 1534 void
1535 SpectrogramLayer::paintAlternative(LayerGeometryProvider *v, QPainter &paint, QRect rect) const 1535 SpectrogramLayer::paintAlternative(LayerGeometryProvider *v, QPainter &paint, QRect rect) const
1536 { 1536 {
1537 Colour3DPlotRenderer *renderer = getRenderer(v); 1537 Colour3DPlotRenderer *renderer = getRenderer(v);
1538 1538
1539 //!!! not time-constrained for now 1539 if (m_synchronous) {
1540 Colour3DPlotRenderer::RenderResult result = renderer->render(v, paint, rect); 1540 (void)renderer->render(v, paint, rect);
1541 1541 return;
1542 //!!! do 1542 }
1543 (void)result; 1543
1544 Colour3DPlotRenderer::RenderResult result =
1545 renderer->renderTimeConstrained(v, paint, rect);
1546
1547 //!!! + mag range
1548
1549 QRect rendered = result.rendered;
1550 if (rendered == rect) return;
1551
1552 int rLeft = rendered.x();
1553 int rRight = rendered.x() + rendered.width();
1554
1555 if (rLeft < rect.x()) {
1556 rLeft = rect.x();
1557 }
1558 if (rRight > rect.x() + rect.width()) {
1559 rRight = rect.x() + rect.width();
1560 }
1561
1562 QRect areaLeft(rect.x(), rect.y(),
1563 rLeft - rect.x(), rect.height());
1564
1565 QRect areaRight(rRight, rect.y(),
1566 rect.x() + rect.width() - rRight, rect.height());
1567
1568 bool updateLeft = (areaLeft.width() > 0);
1569 bool updateRight = (areaRight.width() > 0);
1570
1571 if (updateLeft) {
1572 if (updateRight) {
1573 if (areaLeft.width() > areaRight.width()) {
1574 v->updatePaintRect(areaLeft);
1575 v->updatePaintRect(areaRight);
1576 } else {
1577 v->updatePaintRect(areaRight);
1578 v->updatePaintRect(areaLeft);
1579 }
1580 } else {
1581 v->updatePaintRect(areaLeft);
1582 }
1583 } else {
1584 v->updatePaintRect(areaRight);
1585 }
1544 } 1586 }
1545 1587
1546 Colour3DPlotRenderer * 1588 Colour3DPlotRenderer *
1547 SpectrogramLayer::getRenderer(LayerGeometryProvider *v) const 1589 SpectrogramLayer::getRenderer(LayerGeometryProvider *v) const
1548 { 1590 {