#include <AutocorrViewer.h>
Public Member Functions | |
| AutocorrViewer (QWidget *parent=0) | |
| virtual void | setMode (const Mode &m) |
| virtual void | setVersusDistance (bool b) |
| ~AutocorrViewer () | |
Protected Member Functions | |
| virtual bool | hasCurves (DCReportBlock &dcBlock) |
| virtual void | report2plot (DCReportBlock &dcBlock, Point2D **points, const DCModelInfo &info) |
| virtual void | setLimits (int i, const Rect &r) |
| virtual void | setSampleCount (DCModelInfo *info, DCReportBlock &dcBlock) |
| virtual void | setTarget (TargetList *tl) |
| virtual void | setTitles (int i) |
| virtual AbstractLine * | targetReferenceLine () const |
| DinverDCGui::AutocorrViewer::AutocorrViewer | ( | QWidget * | parent = 0 | ) |
References DinverDCGui::DCModelViewer::addMenu(), DinverDCGui::DCModelViewer::showTarget(), QGpCoreTools::tr(), and TRACE.
: DCModelViewer(parent) { TRACE; _versusDistance=false; Settings::getSize(this, "AutocorrViewer" ); // Tools menu QMenu * m; QAction * a; m=addMenu(tr( "&Tools" )); a=new QAction(tr( "Current target" ), this); a->setCheckable(true); a->setChecked(true); a->setStatusTip(tr( "Show/hide the current target onto the inverted autocorrelation curves" )); connect(a, SIGNAL(toggled(bool)), this, SLOT(showTarget(bool)) ); m->addAction(a); }
| bool DinverDCGui::AutocorrViewer::hasCurves | ( | DCReportBlock & | dcBlock | ) | [protected, virtual] |
Implements DinverDCGui::DCModelViewer.
References DinverDCCore::DCReportBlock::autocorr(), and TRACE.
| void DinverDCGui::AutocorrViewer::report2plot | ( | DCReportBlock & | dcBlock, |
| Point2D ** | points, | ||
| const DCModelInfo & | info | ||
| ) | [protected, virtual] |
Implements DinverDCGui::DCModelViewer.
References DinverDCGui::DCModelViewer::_nGraphs, QGpCoreWave::Mode::index(), DinverDCCore::DCReportBlock::modalStorage(), DinverDCCore::DCModelInfo::offset(), DinverDCCore::DCReportBlock::readModalStorages(), DinverDCCore::DCReportBlock::stream(), DinverDCCore::ModalStorageReader::toPlot(), and TRACE.
{
TRACE;
int nRings;
dcBlock.stream() >> nRings;
dcBlock.readModalStorages(nRings*3);
if(nRings>_nGraphs) nRings=_nGraphs;
int pi=polarisationIndex();
for(int i=0;i<nRings;i++) {
if(dcBlock.modalStorage(3*i+pi)) {
ModalStorageReader reader(dcBlock.stream());
if(reader.seek(dcBlock.stream(),_mode.index())) {
reader.toPlot(dcBlock.stream(), points[i]+info.offset(i));
}
}
}
}
| void DinverDCGui::AutocorrViewer::setLimits | ( | int | i, |
| const Rect & | r | ||
| ) | [protected, virtual] |
| void DinverDCGui::AutocorrViewer::setMode | ( | const Mode & | m | ) | [virtual] |
Reimplemented from DinverDCGui::DCModelViewer.
References QGpCoreWave::Mode::index(), QGpCoreWave::Mode::polarisationString(), QGpCoreTools::tr(), and TRACE.
{
TRACE;
_mode=m;
setWindowTitle(tr("%1 autocorrelation curves (mode %2):").arg(m.polarisationString()).arg(m.index()));
}
| void DinverDCGui::AutocorrViewer::setSampleCount | ( | DCModelInfo * | info, |
| DCReportBlock & | dcBlock | ||
| ) | [protected, virtual] |
hasCurve() must be called just before this function because internal _nRings must be correclty initialized
Implements DinverDCGui::DCModelViewer.
References DinverDCGui::DCModelViewer::_nGraphs, QGpCoreWave::Mode::index(), DinverDCCore::DCReportBlock::modalStorage(), DinverDCCore::DCReportBlock::readModalStorages(), DinverDCCore::DCModelInfo::setSampleCount(), DinverDCCore::DCReportBlock::stream(), and TRACE.
{
TRACE;
int nRings;
dcBlock.stream() >> nRings;
dcBlock.readModalStorages(nRings*3);
if(nRings>_nGraphs) nRings=_nGraphs;
int pi=polarisationIndex();
int nf;
for(int i=0;i<nRings;i++) {
if(dcBlock.modalStorage(3*i+pi)) {
ModalStorageReader reader(dcBlock.stream());
if(reader.seek(dcBlock.stream(),_mode.index())) {
dcBlock.stream() >> nf;
info->setSampleCount(i,nf);
continue;
}
}
info->setSampleCount(i,0);
}
// For the sake of security, set 0 samples to remaining graphs
for(int i=nRings;i<_nGraphs;i++) {
info->setSampleCount(i,0);
}
}
| void DinverDCGui::AutocorrViewer::setTarget | ( | TargetList * | tl | ) | [protected, virtual] |
Reimplemented from DinverDCGui::DCModelViewer.
References DinverDCGui::DCModelViewer::_nGraphs, DinverDCGui::DCModelViewer::_targetLayers, SciFigs::LineLayer::addLine(), DinverDCGui::DCModelViewer::addText(), DinverDCCore::TargetList::autocorrTarget(), DinverDCCore::AutocorrTarget::curves(), QGpCoreWave::AutocorrCurves::isEmpty(), QGpCoreWave::AutocorrRing::maxRadius(), QGpCoreWave::AutocorrRing::minRadius(), QGpCoreWave::AutocorrCurves::ring(), QGpCoreWave::AutocorrCurves::ringCount(), QGpCoreWave::AutocorrCurves::ringCurves(), QGpCoreWave::Mode::setRingIndex(), QGpCoreTools::tr(), and TRACE.
{
TRACE;
const AutocorrCurves& ac=tl->autocorrTarget().curves();
if(ac.isEmpty()) return;
int nRings=ac.ringCount();
if(nRings>_nGraphs) nRings=_nGraphs;
for(int i=0;i<nRings;i++) {
_mode.setRingIndex(i);
const QList<ModalCurve>& curves=ac.ringCurves(i);
for(QList<ModalCurve>::const_iterator it=curves.begin();it!=curves.end(); it++) {
if(it->hasMode(_mode)) {
static_cast<ModalLine *>(_targetLayers[i]->addLine())->setCurve( *it);
}
}
const AutocorrRing& r=ac.ring(i);
addText(i, tr("Ring %1 from %2 m to %3 m").arg(i+1).arg(r.minRadius()).arg(r.maxRadius()));
}
delete tl;
}
| void DinverDCGui::AutocorrViewer::setTitles | ( | int | i | ) | [protected, virtual] |
Implements DinverDCGui::DCModelViewer.
References DinverDCGui::DCModelViewer::_graphs, SciFigs::Axis::setAutoTicks(), SciFigs::Axis::setMajorTicks(), SciFigs::Axis::setMinorTicks(), SciFigs::GraphicObject::setObjectName(), SciFigs::Axis::setRange(), SciFigs::Axis::setScaleType(), SciFigs::Axis::setTitle(), SciFigs::Axis::setTitleInversedScale(), TRACE, w, SciFigs::AxisWindow::xAxis(), and SciFigs::AxisWindow::yAxis().
{
TRACE;
AxisWindow * w=_graphs[i];
w->yAxis()->setRange( -0.5, 1.1);
w->yAxis()->setTitle( "Autocorr ratio" );
w->yAxis()->setTitleInversedScale( "1/Autocorr ratio" );
if(_versusDistance) {
w->xAxis()->setTitle("Distance (m)");
w->xAxis()->setTitleInversedScale("1/distance (1/m)");
} else {
w->xAxis()->setTitle( "Frequency (Hz)" );
w->xAxis()->setTitleInversedScale( "Period (s)" );
w->xAxis()->setScaleType(Scale::Log);
w->xAxis()->setAutoTicks(false);
w->xAxis()->setMajorTicks(2.0);
w->xAxis()->setMinorTicks(0.5);
}
w->setObjectName(QString("spac_%1").arg(i));
}
| virtual void DinverDCGui::AutocorrViewer::setVersusDistance | ( | bool | b | ) | [inline, virtual] |
{_versusDistance=b;}
| AbstractLine * DinverDCGui::AutocorrViewer::targetReferenceLine | ( | ) | const [protected, virtual] |
Implements DinverDCGui::DCModelViewer.
References SciFigs::AbstractLine::setPen(), SciFigs::AbstractLine::setSymbol(), and TRACE.