Mercurial > hg > svgui
comparison layer/SpectrogramLayer.cpp @ 585:f4960f8ce798 debug-output
Convert many cerrs to DEBUGs
author | Chris Cannam |
---|---|
date | Mon, 16 May 2011 17:19:25 +0100 |
parents | 1fe7951a61e8 |
children | 4806715f7a19 |
comparison
equal
deleted
inserted
replaced
584:1fe7951a61e8 | 585:f4960f8ce798 |
---|---|
576 | 576 |
577 //!!! when are views removed from the map? on setLayerDormant? | 577 //!!! when are views removed from the map? on setLayerDormant? |
578 const View *v = i->first; | 578 const View *v = i->first; |
579 | 579 |
580 #ifdef DEBUG_SPECTROGRAM_REPAINT | 580 #ifdef DEBUG_SPECTROGRAM_REPAINT |
581 std::cerr << "SpectrogramLayer::invalidateImageCaches(" | 581 DEBUG << "SpectrogramLayer::invalidateImageCaches(" |
582 << startFrame << ", " << endFrame << "): view range is " | 582 << startFrame << ", " << endFrame << "): view range is " |
583 << v->getStartFrame() << ", " << v->getEndFrame() | 583 << v->getStartFrame() << ", " << v->getEndFrame() |
584 << std::endl; | 584 << endl; |
585 | 585 |
586 std::cerr << "Valid area was: " << i->second.validArea.x() << ", " | 586 std::cerr << "Valid area was: " << i->second.validArea.x() << ", " |
587 << i->second.validArea.y() << " " | 587 << i->second.validArea.y() << " " |
588 << i->second.validArea.width() << "x" | 588 << i->second.validArea.width() << "x" |
589 << i->second.validArea.height() << std::endl; | 589 << i->second.validArea.height() << std::endl; |
596 #endif | 596 #endif |
597 return; | 597 return; |
598 } | 598 } |
599 int x = v->getXForFrame(startFrame); | 599 int x = v->getXForFrame(startFrame); |
600 #ifdef DEBUG_SPECTROGRAM_REPAINT | 600 #ifdef DEBUG_SPECTROGRAM_REPAINT |
601 std::cerr << "clipping from 0 to " << x-1 << std::endl; | 601 DEBUG << "clipping from 0 to " << x-1 << endl; |
602 #endif | 602 #endif |
603 if (x > 1) { | 603 if (x > 1) { |
604 i->second.validArea &= | 604 i->second.validArea &= |
605 QRect(0, 0, x-1, v->height()); | 605 QRect(0, 0, x-1, v->height()); |
606 } else { | 606 } else { |
613 #endif | 613 #endif |
614 return; | 614 return; |
615 } | 615 } |
616 int x = v->getXForFrame(endFrame); | 616 int x = v->getXForFrame(endFrame); |
617 #ifdef DEBUG_SPECTROGRAM_REPAINT | 617 #ifdef DEBUG_SPECTROGRAM_REPAINT |
618 std::cerr << "clipping from " << x+1 << " to " << v->width() | 618 DEBUG << "clipping from " << x+1 << " to " << v->width() |
619 << std::endl; | 619 << endl; |
620 #endif | 620 #endif |
621 if (x < v->width()) { | 621 if (x < v->width()) { |
622 i->second.validArea &= | 622 i->second.validArea &= |
623 QRect(x+1, 0, v->width()-(x+1), v->height()); | 623 QRect(x+1, 0, v->width()-(x+1), v->height()); |
624 } else { | 624 } else { |
636 } | 636 } |
637 | 637 |
638 void | 638 void |
639 SpectrogramLayer::preferenceChanged(PropertyContainer::PropertyName name) | 639 SpectrogramLayer::preferenceChanged(PropertyContainer::PropertyName name) |
640 { | 640 { |
641 std::cerr << "SpectrogramLayer::preferenceChanged(" << name << ")" << std::endl; | 641 DEBUG << "SpectrogramLayer::preferenceChanged(" << name << ")" << endl; |
642 | 642 |
643 if (name == "Window Type") { | 643 if (name == "Window Type") { |
644 setWindowType(Preferences::getInstance()->getWindowType()); | 644 setWindowType(Preferences::getInstance()->getWindowType()); |
645 return; | 645 return; |
646 } | 646 } |
762 } | 762 } |
763 | 763 |
764 void | 764 void |
765 SpectrogramLayer::setGain(float gain) | 765 SpectrogramLayer::setGain(float gain) |
766 { | 766 { |
767 // std::cerr << "SpectrogramLayer::setGain(" << gain << ") (my gain is now " | 767 // DEBUG << "SpectrogramLayer::setGain(" << gain << ") (my gain is now " |
768 // << m_gain << ")" << std::endl; | 768 // << m_gain << ")" << endl; |
769 | 769 |
770 if (m_gain == gain) return; | 770 if (m_gain == gain) return; |
771 | 771 |
772 invalidateImageCaches(); | 772 invalidateImageCaches(); |
773 | 773 |
803 void | 803 void |
804 SpectrogramLayer::setMinFrequency(size_t mf) | 804 SpectrogramLayer::setMinFrequency(size_t mf) |
805 { | 805 { |
806 if (m_minFrequency == mf) return; | 806 if (m_minFrequency == mf) return; |
807 | 807 |
808 // std::cerr << "SpectrogramLayer::setMinFrequency: " << mf << std::endl; | 808 // DEBUG << "SpectrogramLayer::setMinFrequency: " << mf << endl; |
809 | 809 |
810 invalidateImageCaches(); | 810 invalidateImageCaches(); |
811 invalidateMagnitudes(); | 811 invalidateMagnitudes(); |
812 | 812 |
813 m_minFrequency = mf; | 813 m_minFrequency = mf; |
824 void | 824 void |
825 SpectrogramLayer::setMaxFrequency(size_t mf) | 825 SpectrogramLayer::setMaxFrequency(size_t mf) |
826 { | 826 { |
827 if (m_maxFrequency == mf) return; | 827 if (m_maxFrequency == mf) return; |
828 | 828 |
829 // std::cerr << "SpectrogramLayer::setMaxFrequency: " << mf << std::endl; | 829 // DEBUG << "SpectrogramLayer::setMaxFrequency: " << mf << endl; |
830 | 830 |
831 invalidateImageCaches(); | 831 invalidateImageCaches(); |
832 invalidateMagnitudes(); | 832 invalidateMagnitudes(); |
833 | 833 |
834 m_maxFrequency = mf; | 834 m_maxFrequency = mf; |
949 } | 949 } |
950 | 950 |
951 void | 951 void |
952 SpectrogramLayer::setNormalizeVisibleArea(bool n) | 952 SpectrogramLayer::setNormalizeVisibleArea(bool n) |
953 { | 953 { |
954 std::cerr << "SpectrogramLayer::setNormalizeVisibleArea(" << n | 954 DEBUG << "SpectrogramLayer::setNormalizeVisibleArea(" << n |
955 << ") (from " << m_normalizeVisibleArea << ")" << std::endl; | 955 << ") (from " << m_normalizeVisibleArea << ")" << endl; |
956 | 956 |
957 if (m_normalizeVisibleArea == n) return; | 957 if (m_normalizeVisibleArea == n) return; |
958 | 958 |
959 invalidateImageCaches(); | 959 invalidateImageCaches(); |
960 invalidateMagnitudes(); | 960 invalidateMagnitudes(); |
973 SpectrogramLayer::setLayerDormant(const View *v, bool dormant) | 973 SpectrogramLayer::setLayerDormant(const View *v, bool dormant) |
974 { | 974 { |
975 if (dormant) { | 975 if (dormant) { |
976 | 976 |
977 #ifdef DEBUG_SPECTROGRAM_REPAINT | 977 #ifdef DEBUG_SPECTROGRAM_REPAINT |
978 std::cerr << "SpectrogramLayer::setLayerDormant(" << dormant << ")" | 978 DEBUG << "SpectrogramLayer::setLayerDormant(" << dormant << ")" |
979 << std::endl; | 979 << endl; |
980 #endif | 980 #endif |
981 | 981 |
982 if (isLayerDormant(v)) { | 982 if (isLayerDormant(v)) { |
983 return; | 983 return; |
984 } | 984 } |
1018 | 1018 |
1019 void | 1019 void |
1020 SpectrogramLayer::cacheInvalid() | 1020 SpectrogramLayer::cacheInvalid() |
1021 { | 1021 { |
1022 #ifdef DEBUG_SPECTROGRAM_REPAINT | 1022 #ifdef DEBUG_SPECTROGRAM_REPAINT |
1023 std::cerr << "SpectrogramLayer::cacheInvalid()" << std::endl; | 1023 DEBUG << "SpectrogramLayer::cacheInvalid()" << endl; |
1024 #endif | 1024 #endif |
1025 | 1025 |
1026 invalidateImageCaches(); | 1026 invalidateImageCaches(); |
1027 invalidateMagnitudes(); | 1027 invalidateMagnitudes(); |
1028 } | 1028 } |
1029 | 1029 |
1030 void | 1030 void |
1031 SpectrogramLayer::cacheInvalid(size_t from, size_t to) | 1031 SpectrogramLayer::cacheInvalid(size_t from, size_t to) |
1032 { | 1032 { |
1033 #ifdef DEBUG_SPECTROGRAM_REPAINT | 1033 #ifdef DEBUG_SPECTROGRAM_REPAINT |
1034 std::cerr << "SpectrogramLayer::cacheInvalid(" << from << ", " << to << ")" << std::endl; | 1034 DEBUG << "SpectrogramLayer::cacheInvalid(" << from << ", " << to << ")" << endl; |
1035 #endif | 1035 #endif |
1036 | 1036 |
1037 invalidateImageCaches(from, to); | 1037 invalidateImageCaches(from, to); |
1038 invalidateMagnitudes(); | 1038 invalidateMagnitudes(); |
1039 } | 1039 } |
1044 if (!m_model) return; | 1044 if (!m_model) return; |
1045 | 1045 |
1046 bool allDone = true; | 1046 bool allDone = true; |
1047 | 1047 |
1048 #ifdef DEBUG_SPECTROGRAM_REPAINT | 1048 #ifdef DEBUG_SPECTROGRAM_REPAINT |
1049 std::cerr << "SpectrogramLayer::fillTimerTimedOut: have " << m_fftModels.size() << " FFT models associated with views" << std::endl; | 1049 DEBUG << "SpectrogramLayer::fillTimerTimedOut: have " << m_fftModels.size() << " FFT models associated with views" << endl; |
1050 #endif | 1050 #endif |
1051 | 1051 |
1052 for (ViewFFTMap::iterator i = m_fftModels.begin(); | 1052 for (ViewFFTMap::iterator i = m_fftModels.begin(); |
1053 i != m_fftModels.end(); ++i) { | 1053 i != m_fftModels.end(); ++i) { |
1054 | 1054 |
1058 if (model) { | 1058 if (model) { |
1059 | 1059 |
1060 size_t fill = model->getFillExtent(); | 1060 size_t fill = model->getFillExtent(); |
1061 | 1061 |
1062 #ifdef DEBUG_SPECTROGRAM_REPAINT | 1062 #ifdef DEBUG_SPECTROGRAM_REPAINT |
1063 std::cerr << "SpectrogramLayer::fillTimerTimedOut: extent for " << model << ": " << fill << ", last " << lastFill << ", total " << m_model->getEndFrame() << std::endl; | 1063 DEBUG << "SpectrogramLayer::fillTimerTimedOut: extent for " << model << ": " << fill << ", last " << lastFill << ", total " << m_model->getEndFrame() << endl; |
1064 #endif | 1064 #endif |
1065 | 1065 |
1066 if (fill >= lastFill) { | 1066 if (fill >= lastFill) { |
1067 if (fill >= m_model->getEndFrame() && lastFill > 0) { | 1067 if (fill >= m_model->getEndFrame() && lastFill > 0) { |
1068 #ifdef DEBUG_SPECTROGRAM_REPAINT | 1068 #ifdef DEBUG_SPECTROGRAM_REPAINT |
1627 size_t fftSize = getFFTSize(v); | 1627 size_t fftSize = getFFTSize(v); |
1628 | 1628 |
1629 if (m_fftModels.find(v) != m_fftModels.end()) { | 1629 if (m_fftModels.find(v) != m_fftModels.end()) { |
1630 if (m_fftModels[v].first == 0) { | 1630 if (m_fftModels[v].first == 0) { |
1631 #ifdef DEBUG_SPECTROGRAM_REPAINT | 1631 #ifdef DEBUG_SPECTROGRAM_REPAINT |
1632 std::cerr << "SpectrogramLayer::getFFTModel(" << v << "): Found null model" << std::endl; | 1632 DEBUG << "SpectrogramLayer::getFFTModel(" << v << "): Found null model" << endl; |
1633 #endif | 1633 #endif |
1634 return 0; | 1634 return 0; |
1635 } | 1635 } |
1636 if (m_fftModels[v].first->getHeight() != fftSize / 2 + 1) { | 1636 if (m_fftModels[v].first->getHeight() != fftSize / 2 + 1) { |
1637 #ifdef DEBUG_SPECTROGRAM_REPAINT | 1637 #ifdef DEBUG_SPECTROGRAM_REPAINT |
1638 std::cerr << "SpectrogramLayer::getFFTModel(" << v << "): Found a model with the wrong height (" << m_fftModels[v].first->getHeight() << ", wanted " << (fftSize / 2 + 1) << ")" << std::endl; | 1638 DEBUG << "SpectrogramLayer::getFFTModel(" << v << "): Found a model with the wrong height (" << m_fftModels[v].first->getHeight() << ", wanted " << (fftSize / 2 + 1) << ")" << endl; |
1639 #endif | 1639 #endif |
1640 delete m_fftModels[v].first; | 1640 delete m_fftModels[v].first; |
1641 m_fftModels.erase(v); | 1641 m_fftModels.erase(v); |
1642 delete m_peakCaches[v]; | 1642 delete m_peakCaches[v]; |
1643 m_peakCaches.erase(v); | 1643 m_peakCaches.erase(v); |
1644 } else { | 1644 } else { |
1645 #ifdef DEBUG_SPECTROGRAM_REPAINT | 1645 #ifdef DEBUG_SPECTROGRAM_REPAINT |
1646 std::cerr << "SpectrogramLayer::getFFTModel(" << v << "): Found a good model of height " << m_fftModels[v].first->getHeight() << std::endl; | 1646 DEBUG << "SpectrogramLayer::getFFTModel(" << v << "): Found a good model of height " << m_fftModels[v].first->getHeight() << endl; |
1647 #endif | 1647 #endif |
1648 return m_fftModels[v].first; | 1648 return m_fftModels[v].first; |
1649 } | 1649 } |
1650 } | 1650 } |
1651 | 1651 |
1762 } | 1762 } |
1763 | 1763 |
1764 int s0 = int(std::min(s00, s10) + 0.0001); | 1764 int s0 = int(std::min(s00, s10) + 0.0001); |
1765 int s1 = int(std::max(s01, s11) + 0.0001); | 1765 int s1 = int(std::max(s01, s11) + 0.0001); |
1766 | 1766 |
1767 // std::cerr << "SpectrogramLayer::updateViewMagnitudes: x0 = " << x0 << ", x1 = " << x1 << ", s00 = " << s00 << ", s11 = " << s11 << " s0 = " << s0 << ", s1 = " << s1 << std::endl; | 1767 // DEBUG << "SpectrogramLayer::updateViewMagnitudes: x0 = " << x0 << ", x1 = " << x1 << ", s00 = " << s00 << ", s11 = " << s11 << " s0 = " << s0 << ", s1 = " << s1 << endl; |
1768 | 1768 |
1769 if (int(m_columnMags.size()) <= s1) { | 1769 if (int(m_columnMags.size()) <= s1) { |
1770 m_columnMags.resize(s1 + 1); | 1770 m_columnMags.resize(s1 + 1); |
1771 } | 1771 } |
1772 | 1772 |
1775 mag.sample(m_columnMags[s]); | 1775 mag.sample(m_columnMags[s]); |
1776 } | 1776 } |
1777 } | 1777 } |
1778 | 1778 |
1779 #ifdef DEBUG_SPECTROGRAM_REPAINT | 1779 #ifdef DEBUG_SPECTROGRAM_REPAINT |
1780 std::cerr << "SpectrogramLayer::updateViewMagnitudes returning from cols " | 1780 DEBUG << "SpectrogramLayer::updateViewMagnitudes returning from cols " |
1781 << s0 << " -> " << s1 << " inclusive" << std::endl; | 1781 << s0 << " -> " << s1 << " inclusive" << endl; |
1782 #endif | 1782 #endif |
1783 | 1783 |
1784 if (!mag.isSet()) return false; | 1784 if (!mag.isSet()) return false; |
1785 if (mag == m_viewMags[v]) return false; | 1785 if (mag == m_viewMags[v]) return false; |
1786 m_viewMags[v] = mag; | 1786 m_viewMags[v] = mag; |
1800 // It's practically FORTRAN 77 in its clarity and linearity. | 1800 // It's practically FORTRAN 77 in its clarity and linearity. |
1801 | 1801 |
1802 Profiler profiler("SpectrogramLayer::paint", false); | 1802 Profiler profiler("SpectrogramLayer::paint", false); |
1803 | 1803 |
1804 #ifdef DEBUG_SPECTROGRAM_REPAINT | 1804 #ifdef DEBUG_SPECTROGRAM_REPAINT |
1805 std::cerr << "SpectrogramLayer::paint(): m_model is " << m_model << ", zoom level is " << v->getZoomLevel() << ", m_updateTimer " << m_updateTimer << std::endl; | 1805 DEBUG << "SpectrogramLayer::paint(): m_model is " << m_model << ", zoom level is " << v->getZoomLevel() << ", m_updateTimer " << m_updateTimer << endl; |
1806 | 1806 |
1807 std::cerr << "rect is " << rect.x() << "," << rect.y() << " " << rect.width() << "x" << rect.height() << std::endl; | 1807 std::cerr << "rect is " << rect.x() << "," << rect.y() << " " << rect.width() << "x" << rect.height() << std::endl; |
1808 #endif | 1808 #endif |
1809 | 1809 |
1810 long startFrame = v->getStartFrame(); | 1810 long startFrame = v->getStartFrame(); |
1814 if (!m_model || !m_model->isOK() || !m_model->isReady()) { | 1814 if (!m_model || !m_model->isOK() || !m_model->isReady()) { |
1815 return; | 1815 return; |
1816 } | 1816 } |
1817 | 1817 |
1818 if (isLayerDormant(v)) { | 1818 if (isLayerDormant(v)) { |
1819 std::cerr << "SpectrogramLayer::paint(): Layer is dormant, making it undormant again" << std::endl; | 1819 DEBUG << "SpectrogramLayer::paint(): Layer is dormant, making it undormant again" << endl; |
1820 } | 1820 } |
1821 | 1821 |
1822 // Need to do this even if !isLayerDormant, as that could mean v | 1822 // Need to do this even if !isLayerDormant, as that could mean v |
1823 // is not in the dormancy map at all -- we need it to be present | 1823 // is not in the dormancy map at all -- we need it to be present |
1824 // and accountable for when determining whether we need the cache | 1824 // and accountable for when determining whether we need the cache |
1835 } | 1835 } |
1836 */ | 1836 */ |
1837 ImageCache &cache = m_imageCaches[v]; | 1837 ImageCache &cache = m_imageCaches[v]; |
1838 | 1838 |
1839 #ifdef DEBUG_SPECTROGRAM_REPAINT | 1839 #ifdef DEBUG_SPECTROGRAM_REPAINT |
1840 std::cerr << "SpectrogramLayer::paint(): image cache valid area " << cache. | 1840 DEBUG << "SpectrogramLayer::paint(): image cache valid area " << cache. |
1841 | 1841 |
1842 validArea.x() << ", " << cache.validArea.y() << ", " << cache.validArea.width() << "x" << cache.validArea.height() << std::endl; | 1842 validArea.x() << ", " << cache.validArea.y() << ", " << cache.validArea.width() << "x" << cache.validArea.height() << endl; |
1843 #endif | 1843 #endif |
1844 | 1844 |
1845 #ifdef DEBUG_SPECTROGRAM_REPAINT | 1845 #ifdef DEBUG_SPECTROGRAM_REPAINT |
1846 bool stillCacheing = (m_updateTimer != 0); | 1846 bool stillCacheing = (m_updateTimer != 0); |
1847 std::cerr << "SpectrogramLayer::paint(): Still cacheing = " << stillCacheing << std::endl; | 1847 DEBUG << "SpectrogramLayer::paint(): Still cacheing = " << stillCacheing << endl; |
1848 #endif | 1848 #endif |
1849 | 1849 |
1850 int zoomLevel = v->getZoomLevel(); | 1850 int zoomLevel = v->getZoomLevel(); |
1851 | 1851 |
1852 int x0 = 0; | 1852 int x0 = 0; |
2200 #endif | 2200 #endif |
2201 | 2201 |
2202 bool runOutOfData = false; | 2202 bool runOutOfData = false; |
2203 | 2203 |
2204 if (w == 0) { | 2204 if (w == 0) { |
2205 std::cerr << "*** NOTE: w == 0" << std::endl; | 2205 DEBUG << "*** NOTE: w == 0" << endl; |
2206 } | 2206 } |
2207 | 2207 |
2208 #ifdef DEBUG_SPECTROGRAM_REPAINT | 2208 #ifdef DEBUG_SPECTROGRAM_REPAINT |
2209 size_t pixels = 0; | 2209 size_t pixels = 0; |
2210 #endif | 2210 #endif |
2361 | 2361 |
2362 Profiler profiler2("SpectrogramLayer::paint: draw image"); | 2362 Profiler profiler2("SpectrogramLayer::paint: draw image"); |
2363 | 2363 |
2364 if (recreateWholeImageCache) { | 2364 if (recreateWholeImageCache) { |
2365 #ifdef DEBUG_SPECTROGRAM_REPAINT | 2365 #ifdef DEBUG_SPECTROGRAM_REPAINT |
2366 std::cerr << "Recreating image cache: width = " << v->width() | 2366 DEBUG << "Recreating image cache: width = " << v->width() |
2367 << ", height = " << h << std::endl; | 2367 << ", height = " << h << endl; |
2368 #endif | 2368 #endif |
2369 cache.image = QImage(v->width(), h, QImage::Format_ARGB32_Premultiplied); | 2369 cache.image = QImage(v->width(), h, QImage::Format_ARGB32_Premultiplied); |
2370 } | 2370 } |
2371 | 2371 |
2372 if (w > 0) { | 2372 if (w > 0) { |
2373 #ifdef DEBUG_SPECTROGRAM_REPAINT | 2373 #ifdef DEBUG_SPECTROGRAM_REPAINT |
2374 std::cerr << "Painting " << w << "x" << h | 2374 DEBUG << "Painting " << w << "x" << h |
2375 << " from draw buffer at " << 0 << "," << 0 | 2375 << " from draw buffer at " << 0 << "," << 0 |
2376 << " to " << w << "x" << h << " on cache at " | 2376 << " to " << w << "x" << h << " on cache at " |
2377 << x0 << "," << 0 << std::endl; | 2377 << x0 << "," << 0 << endl; |
2378 #endif | 2378 #endif |
2379 | 2379 |
2380 QPainter cachePainter(&cache.image); | 2380 QPainter cachePainter(&cache.image); |
2381 | 2381 |
2382 if (bufferBinResolution) { | 2382 if (bufferBinResolution) { |
2383 int scaledLeft = v->getXForFrame(leftBoundaryFrame); | 2383 int scaledLeft = v->getXForFrame(leftBoundaryFrame); |
2384 int scaledRight = v->getXForFrame(rightBoundaryFrame); | 2384 int scaledRight = v->getXForFrame(rightBoundaryFrame); |
2385 #ifdef DEBUG_SPECTROGRAM_REPAINT | 2385 #ifdef DEBUG_SPECTROGRAM_REPAINT |
2386 cerr << "Rescaling image from " << bufwid | 2386 DEBUG << "Rescaling image from " << bufwid |
2387 << "x" << h << " to " | 2387 << "x" << h << " to " |
2388 << scaledRight-scaledLeft << "x" << h << endl; | 2388 << scaledRight-scaledLeft << "x" << h << endl; |
2389 #endif | 2389 #endif |
2390 Preferences::SpectrogramXSmoothing xsmoothing = | 2390 Preferences::SpectrogramXSmoothing xsmoothing = |
2391 Preferences::getInstance()->getSpectrogramXSmoothing(); | 2391 Preferences::getInstance()->getSpectrogramXSmoothing(); |
2392 // cerr << "xsmoothing == " << xsmoothing << endl; | 2392 // DEBUG << "xsmoothing == " << xsmoothing << endl; |
2393 QImage scaled = m_drawBuffer.scaled | 2393 QImage scaled = m_drawBuffer.scaled |
2394 (scaledRight - scaledLeft, h, | 2394 (scaledRight - scaledLeft, h, |
2395 Qt::IgnoreAspectRatio, | 2395 Qt::IgnoreAspectRatio, |
2396 ((xsmoothing == Preferences::SpectrogramXInterpolated) ? | 2396 ((xsmoothing == Preferences::SpectrogramXInterpolated) ? |
2397 Qt::SmoothTransformation : Qt::FastTransformation)); | 2397 Qt::SmoothTransformation : Qt::FastTransformation)); |
2398 int scaledLeftCrop = v->getXForFrame(leftCropFrame); | 2398 int scaledLeftCrop = v->getXForFrame(leftCropFrame); |
2399 int scaledRightCrop = v->getXForFrame(rightCropFrame); | 2399 int scaledRightCrop = v->getXForFrame(rightCropFrame); |
2400 #ifdef DEBUG_SPECTROGRAM_REPAINT | 2400 #ifdef DEBUG_SPECTROGRAM_REPAINT |
2401 cerr << "Drawing image region of width " << scaledRightCrop - scaledLeftCrop << " to " | 2401 DEBUG << "Drawing image region of width " << scaledRightCrop - scaledLeftCrop << " to " |
2402 << scaledLeftCrop << " from " << scaledLeftCrop - scaledLeft << endl; | 2402 << scaledLeftCrop << " from " << scaledLeftCrop - scaledLeft << endl; |
2403 #endif | 2403 #endif |
2404 cachePainter.drawImage | 2404 cachePainter.drawImage |
2405 (QRect(scaledLeftCrop, 0, | 2405 (QRect(scaledLeftCrop, 0, |
2406 scaledRightCrop - scaledLeftCrop, h), | 2406 scaledRightCrop - scaledLeftCrop, h), |
2417 } | 2417 } |
2418 | 2418 |
2419 QRect pr = rect & cache.validArea; | 2419 QRect pr = rect & cache.validArea; |
2420 | 2420 |
2421 #ifdef DEBUG_SPECTROGRAM_REPAINT | 2421 #ifdef DEBUG_SPECTROGRAM_REPAINT |
2422 std::cerr << "Painting " << pr.width() << "x" << pr.height() | 2422 DEBUG << "Painting " << pr.width() << "x" << pr.height() |
2423 << " from cache at " << pr.x() << "," << pr.y() | 2423 << " from cache at " << pr.x() << "," << pr.y() |
2424 << " to window" << std::endl; | 2424 << " to window" << endl; |
2425 #endif | 2425 #endif |
2426 | 2426 |
2427 paint.drawImage(pr.x(), pr.y(), cache.image, | 2427 paint.drawImage(pr.x(), pr.y(), cache.image, |
2428 pr.x(), pr.y(), pr.width(), pr.height()); | 2428 pr.x(), pr.y(), pr.width(), pr.height()); |
2429 //!!! | 2429 //!!! |
2437 | 2437 |
2438 if (!m_normalizeVisibleArea || !overallMagChanged) { | 2438 if (!m_normalizeVisibleArea || !overallMagChanged) { |
2439 | 2439 |
2440 if (cache.validArea.x() > 0) { | 2440 if (cache.validArea.x() > 0) { |
2441 #ifdef DEBUG_SPECTROGRAM_REPAINT | 2441 #ifdef DEBUG_SPECTROGRAM_REPAINT |
2442 std::cerr << "SpectrogramLayer::paint() updating left (0, " | 2442 DEBUG << "SpectrogramLayer::paint() updating left (0, " |
2443 << cache.validArea.x() << ")" << std::endl; | 2443 << cache.validArea.x() << ")" << endl; |
2444 #endif | 2444 #endif |
2445 v->update(0, 0, cache.validArea.x(), h); | 2445 v->update(0, 0, cache.validArea.x(), h); |
2446 } | 2446 } |
2447 | 2447 |
2448 if (cache.validArea.x() + cache.validArea.width() < | 2448 if (cache.validArea.x() + cache.validArea.width() < |
2449 cache.image.width()) { | 2449 cache.image.width()) { |
2450 #ifdef DEBUG_SPECTROGRAM_REPAINT | 2450 #ifdef DEBUG_SPECTROGRAM_REPAINT |
2451 std::cerr << "SpectrogramLayer::paint() updating right (" | 2451 DEBUG << "SpectrogramLayer::paint() updating right (" |
2452 << cache.validArea.x() + cache.validArea.width() | 2452 << cache.validArea.x() + cache.validArea.width() |
2453 << ", " | 2453 << ", " |
2454 << cache.image.width() - (cache.validArea.x() + | 2454 << cache.image.width() - (cache.validArea.x() + |
2455 cache.validArea.width()) | 2455 cache.validArea.width()) |
2456 << ")" << std::endl; | 2456 << ")" << endl; |
2457 #endif | 2457 #endif |
2458 v->update(cache.validArea.x() + cache.validArea.width(), | 2458 v->update(cache.validArea.x() + cache.validArea.width(), |
2459 0, | 2459 0, |
2460 cache.image.width() - (cache.validArea.x() + | 2460 cache.image.width() - (cache.validArea.x() + |
2461 cache.validArea.width()), | 2461 cache.validArea.width()), |
2470 } | 2470 } |
2471 | 2471 |
2472 illuminateLocalFeatures(v, paint); | 2472 illuminateLocalFeatures(v, paint); |
2473 | 2473 |
2474 #ifdef DEBUG_SPECTROGRAM_REPAINT | 2474 #ifdef DEBUG_SPECTROGRAM_REPAINT |
2475 std::cerr << "SpectrogramLayer::paint() returning" << std::endl; | 2475 DEBUG << "SpectrogramLayer::paint() returning" << endl; |
2476 #endif | 2476 #endif |
2477 | 2477 |
2478 if (!m_synchronous) { | 2478 if (!m_synchronous) { |
2479 m_lastPaintBlockWidth = paintBlockWidth; | 2479 m_lastPaintBlockWidth = paintBlockWidth; |
2480 (void)gettimeofday(&tv, 0); | 2480 (void)gettimeofday(&tv, 0); |
2705 MagnitudeRange mag; | 2705 MagnitudeRange mag; |
2706 | 2706 |
2707 if (sx != psx) { | 2707 if (sx != psx) { |
2708 if (fft) { | 2708 if (fft) { |
2709 #ifdef DEBUG_SPECTROGRAM_REPAINT | 2709 #ifdef DEBUG_SPECTROGRAM_REPAINT |
2710 cerr << "Retrieving column " << sx << " from fft directly" << endl; | 2710 DEBUG << "Retrieving column " << sx << " from fft directly" << endl; |
2711 #endif | 2711 #endif |
2712 if (m_colourScale == PhaseColourScale) { | 2712 if (m_colourScale == PhaseColourScale) { |
2713 fft->getPhasesAt(sx, autoarray, minbin, maxbin - minbin + 1); | 2713 fft->getPhasesAt(sx, autoarray, minbin, maxbin - minbin + 1); |
2714 } else if (m_normalizeColumns) { | 2714 } else if (m_normalizeColumns) { |
2715 fft->getNormalizedMagnitudesAt(sx, autoarray, minbin, maxbin - minbin + 1); | 2715 fft->getNormalizedMagnitudesAt(sx, autoarray, minbin, maxbin - minbin + 1); |
2716 } else { | 2716 } else { |
2717 fft->getMagnitudesAt(sx, autoarray, minbin, maxbin - minbin + 1); | 2717 fft->getMagnitudesAt(sx, autoarray, minbin, maxbin - minbin + 1); |
2718 } | 2718 } |
2719 } else { | 2719 } else { |
2720 #ifdef DEBUG_SPECTROGRAM_REPAINT | 2720 #ifdef DEBUG_SPECTROGRAM_REPAINT |
2721 cerr << "Retrieving column " << sx << " from peaks cache" << endl; | 2721 DEBUG << "Retrieving column " << sx << " from peaks cache" << endl; |
2722 #endif | 2722 #endif |
2723 c = sourceModel->getColumn(sx); | 2723 c = sourceModel->getColumn(sx); |
2724 if (m_normalizeColumns) { | 2724 if (m_normalizeColumns) { |
2725 for (int y = 0; y < h; ++y) { | 2725 for (int y = 0; y < h; ++y) { |
2726 if (c[y] > columnMax) columnMax = c[y]; | 2726 if (c[y] > columnMax) columnMax = c[y]; |
2898 if (m_updateTimer == 0) return 100; | 2898 if (m_updateTimer == 0) return 100; |
2899 if (m_fftModels.find(v) == m_fftModels.end()) return 100; | 2899 if (m_fftModels.find(v) == m_fftModels.end()) return 100; |
2900 | 2900 |
2901 size_t completion = m_fftModels[v].first->getCompletion(); | 2901 size_t completion = m_fftModels[v].first->getCompletion(); |
2902 #ifdef DEBUG_SPECTROGRAM_REPAINT | 2902 #ifdef DEBUG_SPECTROGRAM_REPAINT |
2903 std::cerr << "SpectrogramLayer::getCompletion: completion = " << completion << std::endl; | 2903 DEBUG << "SpectrogramLayer::getCompletion: completion = " << completion << endl; |
2904 #endif | 2904 #endif |
2905 return completion; | 2905 return completion; |
2906 } | 2906 } |
2907 | 2907 |
2908 QString | 2908 QString |
2931 SpectrogramLayer::getDisplayExtents(float &min, float &max) const | 2931 SpectrogramLayer::getDisplayExtents(float &min, float &max) const |
2932 { | 2932 { |
2933 min = getEffectiveMinFrequency(); | 2933 min = getEffectiveMinFrequency(); |
2934 max = getEffectiveMaxFrequency(); | 2934 max = getEffectiveMaxFrequency(); |
2935 | 2935 |
2936 // std::cerr << "SpectrogramLayer::getDisplayExtents: " << min << "->" << max << std::endl; | 2936 // DEBUG << "SpectrogramLayer::getDisplayExtents: " << min << "->" << max << endl; |
2937 return true; | 2937 return true; |
2938 } | 2938 } |
2939 | 2939 |
2940 bool | 2940 bool |
2941 SpectrogramLayer::setDisplayExtents(float min, float max) | 2941 SpectrogramLayer::setDisplayExtents(float min, float max) |
2942 { | 2942 { |
2943 if (!m_model) return false; | 2943 if (!m_model) return false; |
2944 | 2944 |
2945 // std::cerr << "SpectrogramLayer::setDisplayExtents: " << min << "->" << max << std::endl; | 2945 // DEBUG << "SpectrogramLayer::setDisplayExtents: " << min << "->" << max << endl; |
2946 | 2946 |
2947 if (min < 0) min = 0; | 2947 if (min < 0) min = 0; |
2948 if (max > m_model->getSampleRate()/2) max = m_model->getSampleRate()/2; | 2948 if (max > m_model->getSampleRate()/2) max = m_model->getSampleRate()/2; |
2949 | 2949 |
2950 size_t minf = lrintf(min); | 2950 size_t minf = lrintf(min); |
3549 size_t initialMax = m_initialMaxFrequency; | 3549 size_t initialMax = m_initialMaxFrequency; |
3550 if (initialMax == 0) initialMax = sr / 2; | 3550 if (initialMax == 0) initialMax = sr / 2; |
3551 | 3551 |
3552 defaultStep = mapper.getPositionForValue(initialMax) - minStep; | 3552 defaultStep = mapper.getPositionForValue(initialMax) - minStep; |
3553 | 3553 |
3554 // std::cerr << "SpectrogramLayer::getVerticalZoomSteps: " << maxStep - minStep << " (" << maxStep <<"-" << minStep << "), default is " << defaultStep << " (from initial max freq " << initialMax << ")" << std::endl; | 3554 // DEBUG << "SpectrogramLayer::getVerticalZoomSteps: " << maxStep - minStep << " (" << maxStep <<"-" << minStep << "), default is " << defaultStep << " (from initial max freq " << initialMax << ")" << endl; |
3555 | 3555 |
3556 return maxStep - minStep; | 3556 return maxStep - minStep; |
3557 } | 3557 } |
3558 | 3558 |
3559 int | 3559 int |
3564 float dmin, dmax; | 3564 float dmin, dmax; |
3565 getDisplayExtents(dmin, dmax); | 3565 getDisplayExtents(dmin, dmax); |
3566 | 3566 |
3567 SpectrogramRangeMapper mapper(m_model->getSampleRate(), m_fftSize); | 3567 SpectrogramRangeMapper mapper(m_model->getSampleRate(), m_fftSize); |
3568 int n = mapper.getPositionForValue(dmax - dmin); | 3568 int n = mapper.getPositionForValue(dmax - dmin); |
3569 // std::cerr << "SpectrogramLayer::getCurrentVerticalZoomStep: " << n << std::endl; | 3569 // DEBUG << "SpectrogramLayer::getCurrentVerticalZoomStep: " << n << endl; |
3570 return n; | 3570 return n; |
3571 } | 3571 } |
3572 | 3572 |
3573 void | 3573 void |
3574 SpectrogramLayer::setVerticalZoomStep(int step) | 3574 SpectrogramLayer::setVerticalZoomStep(int step) |
3630 } | 3630 } |
3631 if (newmax > mmax) { | 3631 if (newmax > mmax) { |
3632 newmax = mmax; | 3632 newmax = mmax; |
3633 } | 3633 } |
3634 | 3634 |
3635 // std::cerr << "SpectrogramLayer::setVerticalZoomStep: " << step << ": " << newmin << " -> " << newmax << " (range " << newdist << ")" << std::endl; | 3635 // DEBUG << "SpectrogramLayer::setVerticalZoomStep: " << step << ": " << newmin << " -> " << newmax << " (range " << newdist << ")" << endl; |
3636 | 3636 |
3637 setMinFrequency(lrintf(newmin)); | 3637 setMinFrequency(lrintf(newmin)); |
3638 setMaxFrequency(lrintf(newmax)); | 3638 setMaxFrequency(lrintf(newmax)); |
3639 } | 3639 } |
3640 | 3640 |
3652 if (r.startY > 0.0) y0 = getYForFrequency(v, r.startY); | 3652 if (r.startY > 0.0) y0 = getYForFrequency(v, r.startY); |
3653 | 3653 |
3654 int y1 = y0; | 3654 int y1 = y0; |
3655 if (r.endY > 0.0) y1 = getYForFrequency(v, r.endY); | 3655 if (r.endY > 0.0) y1 = getYForFrequency(v, r.endY); |
3656 | 3656 |
3657 // std::cerr << "SpectrogramLayer::updateMeasureRectYCoords: start " << r.startY << " -> " << y0 << ", end " << r.endY << " -> " << y1 << std::endl; | 3657 // DEBUG << "SpectrogramLayer::updateMeasureRectYCoords: start " << r.startY << " -> " << y0 << ", end " << r.endY << " -> " << y1 << endl; |
3658 | 3658 |
3659 r.pixrect = QRect(r.pixrect.x(), y0, r.pixrect.width(), y1 - y0); | 3659 r.pixrect = QRect(r.pixrect.x(), y0, r.pixrect.width(), y1 - y0); |
3660 } | 3660 } |
3661 | 3661 |
3662 void | 3662 void |
3666 r.startY = getFrequencyForY(v, y); | 3666 r.startY = getFrequencyForY(v, y); |
3667 r.endY = r.startY; | 3667 r.endY = r.startY; |
3668 } else { | 3668 } else { |
3669 r.endY = getFrequencyForY(v, y); | 3669 r.endY = getFrequencyForY(v, y); |
3670 } | 3670 } |
3671 // std::cerr << "SpectrogramLayer::setMeasureRectYCoord: start " << r.startY << " <- " << y << ", end " << r.endY << " <- " << y << std::endl; | 3671 // DEBUG << "SpectrogramLayer::setMeasureRectYCoord: start " << r.startY << " <- " << y << ", end " << r.endY << " <- " << y << endl; |
3672 | 3672 |
3673 } | 3673 } |
3674 | 3674 |
3675 void | 3675 void |
3676 SpectrogramLayer::toXml(QTextStream &stream, | 3676 SpectrogramLayer::toXml(QTextStream &stream, |
3742 float threshold = attributes.value("threshold").toFloat(&ok); | 3742 float threshold = attributes.value("threshold").toFloat(&ok); |
3743 if (ok) setThreshold(threshold); | 3743 if (ok) setThreshold(threshold); |
3744 | 3744 |
3745 size_t minFrequency = attributes.value("minFrequency").toUInt(&ok); | 3745 size_t minFrequency = attributes.value("minFrequency").toUInt(&ok); |
3746 if (ok) { | 3746 if (ok) { |
3747 std::cerr << "SpectrogramLayer::setProperties: setting min freq to " << minFrequency << std::endl; | 3747 DEBUG << "SpectrogramLayer::setProperties: setting min freq to " << minFrequency << endl; |
3748 setMinFrequency(minFrequency); | 3748 setMinFrequency(minFrequency); |
3749 } | 3749 } |
3750 | 3750 |
3751 size_t maxFrequency = attributes.value("maxFrequency").toUInt(&ok); | 3751 size_t maxFrequency = attributes.value("maxFrequency").toUInt(&ok); |
3752 if (ok) { | 3752 if (ok) { |
3753 std::cerr << "SpectrogramLayer::setProperties: setting max freq to " << maxFrequency << std::endl; | 3753 DEBUG << "SpectrogramLayer::setProperties: setting max freq to " << maxFrequency << endl; |
3754 setMaxFrequency(maxFrequency); | 3754 setMaxFrequency(maxFrequency); |
3755 } | 3755 } |
3756 | 3756 |
3757 ColourScale colourScale = (ColourScale) | 3757 ColourScale colourScale = (ColourScale) |
3758 attributes.value("colourScale").toInt(&ok); | 3758 attributes.value("colourScale").toInt(&ok); |