#include <DispersionViewer.h>
Public Member Functions | |
DispersionViewer (QWidget *parent=0) | |
virtual void | setMode (const Mode &m) |
~DispersionViewer () | |
Protected Member Functions | |
virtual bool | hasCurves (DCReportBlock &dcBlock) |
virtual void | report2plot (DCReportBlock &dcBlock, Point2D **points, const DCModelInfo &info) |
bool | seekMode (DCReportBlock &dcBlock) |
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 |
Protected Attributes | |
Mode | _mode |
DinverDCGui::DispersionViewer::DispersionViewer | ( | QWidget * | parent = 0 | ) |
References DinverDCGui::DCModelViewer::addMenu(), DinverDCGui::DCModelViewer::showTarget(), QGpCoreTools::tr(), and TRACE.
: DCModelViewer(parent) { TRACE; Settings::getSize(this, "DispersionViewer" ); // 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 dispersion curves" )); connect(a, SIGNAL(toggled(bool)), this, SLOT(showTarget(bool)) ); m->addAction(a); }
bool DinverDCGui::DispersionViewer::hasCurves | ( | DCReportBlock & | dcBlock | ) | [protected, virtual] |
Implements DinverDCGui::DCModelViewer.
References DinverDCCore::DCReportBlock::dispersion(), DinverDCCore::DCReportBlock::readModalStorages(), seekMode(), and TRACE.
{ TRACE; if(dcBlock.dispersion()) { dcBlock.readModalStorages(4); return seekMode(dcBlock); } else return false; }
void DinverDCGui::DispersionViewer::report2plot | ( | DCReportBlock & | dcBlock, |
Point2D ** | points, | ||
const DCModelInfo & | info | ||
) | [protected, virtual] |
bool DinverDCGui::DispersionViewer::seekMode | ( | DCReportBlock & | dcBlock | ) | [protected] |
References _mode, DinverDCCore::DCReportBlock::modalStorage(), QGpCoreWave::Mode::polarisation(), QGpCoreWave::Mode::slowness(), and TRACE.
Referenced by hasCurves().
{ TRACE; switch (_mode.polarisation()) { case Mode::Love: switch (_mode.slowness()) { case Mode::Phase: return dcBlock.modalStorage(2); case Mode::Group: return dcBlock.modalStorage(3); } break; default: switch (_mode.slowness()) { case Mode::Phase: return dcBlock.modalStorage(0); case Mode::Group: return dcBlock.modalStorage(1); } break; } return false; }
void DinverDCGui::DispersionViewer::setLimits | ( | int | i, |
const Rect & | r | ||
) | [protected, virtual] |
void DinverDCGui::DispersionViewer::setMode | ( | const Mode & | m | ) | [virtual] |
Reimplemented from DinverDCGui::DCModelViewer.
References _mode, QGpCoreWave::Mode::polarisationString(), QGpCoreWave::Mode::slownessString(), QGpCoreTools::tr(), and TRACE.
{ TRACE; _mode=m; setWindowTitle(tr("Dispersion curves (%1 %2):").arg(m.slownessString()).arg(m.polarisationString()) ); }
void DinverDCGui::DispersionViewer::setSampleCount | ( | DCModelInfo * | info, |
DCReportBlock & | dcBlock | ||
) | [protected, virtual] |
Implements DinverDCGui::DCModelViewer.
References DinverDCGui::DCModelViewer::_nGraphs, DinverDCCore::ModalStorageReader::nModes(), DinverDCCore::DCModelInfo::setSampleCount(), DinverDCCore::DCReportBlock::stream(), and TRACE.
{ TRACE; ModalStorageReader reader(dcBlock.stream()); int n=reader.nModes(); if(n>_nGraphs) n=_nGraphs; int i, nf; for(i=0;i<n;i++) { if(reader.seek(dcBlock.stream(),i)) { dcBlock.stream() >> nf; info->setSampleCount(i,nf); } else { info->setSampleCount(i,0); } } for(;i<_nGraphs;i++) info->setSampleCount(i,0); }
void DinverDCGui::DispersionViewer::setTarget | ( | TargetList * | tl | ) | [protected, virtual] |
Reimplemented from DinverDCGui::DCModelViewer.
References _mode, DinverDCGui::DCModelViewer::_nGraphs, DinverDCGui::DCModelViewer::_targetLayers, SciFigs::LineLayer::addLine(), DinverDCGui::DCModelViewer::addText(), DinverDCCore::ModalCurveTarget::curves(), DinverDCCore::TargetList::dispersionTarget(), QGpCoreWave::Mode::setIndex(), QGpCoreTools::tr(), and TRACE.
{ TRACE; const QList<ModalCurve>& curves=tl->dispersionTarget().curves(); for(int i=0;i<_nGraphs;i++) { _mode.setIndex(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); } } if(i==0) addText(i, tr("Fundamental mode")); else addText(i, tr("Higher mode %1").arg(i)); } delete tl; }
void DinverDCGui::DispersionViewer::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::setScaleType(), SciFigs::Axis::setTitle(), SciFigs::Axis::setTitleInversedScale(), TRACE, w, SciFigs::AxisWindow::xAxis(), and SciFigs::AxisWindow::yAxis().
{ TRACE; AxisWindow * w=_graphs[i]; w->yAxis()->setTitle( "Slowness (s/m)" ); w->yAxis()->setTitleInversedScale( "Velocity (m/s)" ); 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("dc_%1").arg(i)); }
AbstractLine * DinverDCGui::DispersionViewer::targetReferenceLine | ( | ) | const [protected, virtual] |
Implements DinverDCGui::DCModelViewer.
References SciFigs::AbstractLine::setPen(), SciFigs::AbstractLine::setSymbol(), and TRACE.
Mode DinverDCGui::DispersionViewer::_mode [protected] |
Referenced by seekMode(), setMode(), and setTarget().