All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Public Slots | Public Member Functions | Public Attributes | Protected Member Functions
MonoStation::AbstractSummary Class Reference

Brief description of class still missing. More...

#include <AbstractSummary.h>

Inheritance diagram for MonoStation::AbstractSummary:
SciFigs::GraphicSheetMenu HVSummary SpectrumSummary

List of all members.

Public Slots

virtual void setLimits ()

Public Member Functions

 AbstractSummary (QWidget *parent=0)
virtual void addActions ()
virtual void setStations (const QList< AbstractStation * > &stations)
virtual void setWindowTitle (QString subPoolName)=0
 ~AbstractSummary ()

Public Attributes

QMenu * menuTools

Protected Member Functions

LineLayeraverageLayer () const
XYValuePlotbubbleLayer () const
NameLineLayerbubbleNameLayer () const
void createAverageGraph (QString yAxisTitle, double x, double y)
void createBubbleGraph (double x, double y)
virtual void createGraphs (bool multiStations)=0
void createGridCrossSectionGraph (double x, double y)
void createSpectrumGridGraph (double x, double y)
void createStackedGraph (QString yAxisTitle, double x, double y)
QMap< double, StationResults * > distance2Station ()
LineLayergridCrossSectionLayer () const
void setAverageValues ()
void setBubbleValues ()
void setSpectrumGridValues (const QMap< double, StationResults * > *dist2stat)
void setStackedValues ()
virtual void setValues (const QMap< double, StationResults * > *dist2stat=0)=0
IrregularGrid2DPlotspectrumGridLayer () const
GridMaxFollowerspectrumGridMaxLayer () const
LineLayerstackedLayer () const

Detailed Description

Brief description of class still missing.

Full description of class still missing


Constructor & Destructor Documentation

Description of constructor still missing

References MonoStation::StationResults::PeakFrequency, MonoStation::StationLine::PeakNumber, MonoStation::StationLine::StationName, and TRACE.

    : GraphicSheetMenu(parent)
{
  TRACE;
  _stackedLayer=0;
  _averageLayer=0;
  _spectrumGridLayer=0;
  _spectrumGridMaxLayer=0;
  _gridCrossSectionLayer=0;
  _bubbleLayer=0;
  _bubbleNameLayer=0;
  _bubblePalette=0;

  _mapLabels=StationLine::StationName;
  _mapPeakSelection=StationLine::PeakNumber;
  _mapPeakValue=StationResults::PeakFrequency;
  _mapPeakIndex=0;
  _mapShowBubbles=true;
  _mapPeakValueDecimals=2;

  _mapOptions=0;
  setGeometry(5, 80, 500, 500);
}

Description of destructor still missing

References TRACE.

{
  TRACE;
}

Member Function Documentation

Reimplemented from SciFigs::GraphicSheetMenu.

References SciFigs::GraphicSheetMenu::addMenu(), menuTools, QGpCoreTools::tr(), and TRACE.

{
  TRACE;
  QAction * a;

  menuTools=addMenu(tr( "&Tools" ));

  a=new QAction(tr( "&Pick maxima" ), this);
  a->setStatusTip(tr( "Switch grid plot to pick mode" ));
  a->setCheckable(true);
  connect(a, SIGNAL(toggled(bool)), this, SLOT(pickGridMaxima(bool)) );
  menuTools->addAction(a);

  a=new QAction(tr( "&Auto pick maximum" ), this);
  a->setStatusTip(tr( "Automatically pick the maximum of grid" ));
  connect(a, SIGNAL(triggered()), this, SLOT(autoPickGridMaximum()) );
  menuTools->addAction(a);

  a=new QAction(tr( "&Cross section" ), this);
  a->setStatusTip(tr( "Extract a cross section in the grid for each picked curve" ));
  connect(a, SIGNAL(triggered()), this, SLOT(gridCrossSection()) );
  menuTools->addAction(a);

  a=new QAction(tr( "&Map options" ), this);
  a->setStatusTip(tr( "Set options for frequency map" ));
  connect(a, SIGNAL(triggered()), this, SLOT(mapOptions()) );
  menuTools->addAction(a);
}
LineLayer* MonoStation::AbstractSummary::averageLayer ( ) const [inline, protected]
{return _averageLayer;}
{return _bubbleLayer;}
{return _bubbleNameLayer;}
void MonoStation::AbstractSummary::createAverageGraph ( QString  yAxisTitle,
double  x,
double  y 
) [protected]

References SciFigs::GraphicSheetMenu::addGraph(), SciFigs::GraphicSheetMenu::setFrequencyTitles(), SciFigs::GraphicSheetMenu::setGraphGeometry(), SciFigs::AbstractLine::setPen(), SciFigs::LineLayer::setReferenceLine(), SciFigs::AbstractLine::setSymbol(), TRACE, and w.

Referenced by HVSummary::createGraphs(), and SpectrumSummary::createGraphs().

{
  TRACE;
  ASSERT(!_averageLayer);

  AxisWindow * w=addGraph();
  setGraphGeometry(w, x, 8.0, y+0.5, 8.0);
  setFrequencyTitles(w, yAxisTitle, "", Number::Fixed);
  _averagePeakLayer=new ParallelBands(w); // Frequency bands
  _averagePeakLayer->setObjectName("Average f0");
  _averageLayer=new LineLayer(w);
  _averageLayer->setObjectName("Average");
  PlotLine2D * line;
  line=new PlotLine2D;
  line->setPen(Pen(Qt::black, 0.6, Qt::SolidLine));
  line->setSymbol(Symbol(Symbol::NoSymbol));
  _averageLayer->setReferenceLine(line);
}
void MonoStation::AbstractSummary::createBubbleGraph ( double  x,
double  y 
) [protected]

Map with X,Y coordinates of stations, frequency ploted with colored circles

References SciFigs::GraphicSheetMenu::_sheet, SciFigs::GraphicSheetMenu::addGraph(), SciFigs::GraphicSheet::addObject(), SciFigs::ColorPaletteWidget::defaultHSVColors(), SciFigs::ColorPaletteWidget::palette(), SciFigs::XYPlot::setDotDiameter(), SciFigs::LineLayer::setErrorBar(), SciFigs::GraphicSheetMenu::setGraphGeometry(), SciFigs::ColorPaletteWidget::setNumberPrecision(), SciFigs::GraphicObject::setObjectName(), SciFigs::ColorPaletteWidget::setOrientation(), SciFigs::XYValuePlot::setPalette(), SciFigs::AbstractLine::setPen(), SciFigs::GraphicObject::setPrintHeight(), SciFigs::GraphicObject::setPrintWidth(), SciFigs::GraphicObject::setPrintXAnchor(), SciFigs::GraphicObject::setPrintYAnchor(), SciFigs::LineLayer::setReferenceLine(), SciFigs::Axis::setSizeType(), TRACE, w, SciFigs::AxisWindow::xAxis(), and SciFigs::AxisWindow::yAxis().

Referenced by HVSummary::createGraphs().

{
  TRACE;
  ASSERT(!_bubbleLayer);

  AxisWindow * w=addGraph();
  setGraphGeometry(w, x, 16.0, y+0.5, 16.0);

  _bubblePalette=new ColorPaletteWidget(0);
  _bubblePalette->setObjectName("BubblePalette");
  _bubblePalette->defaultHSVColors(255, 230, 128);
  _bubblePalette->setNumberPrecision(2);
  _bubblePalette->setOrientation(Axis::West);
  _bubblePalette->setPrintXAnchor(x+16.5);
  _bubblePalette->setPrintYAnchor(y+1.0);
  _bubblePalette->setPrintWidth(1.3);
  _bubblePalette->setPrintHeight(6.0);
  _sheet.addObject(_bubblePalette);

  w->xAxis()->setSizeType(Axis::Scaled);
  w->yAxis()->setSizeType(Axis::Scaled);
  ImageLayer * bg=new ImageLayer(w);
  bg->setObjectName("Background");
  _bubbleLayer=new XYValuePlot (w);
  _bubbleLayer->setObjectName("Peaks");
  _bubbleLayer->setDotDiameter(0.25);
  _bubbleLayer->setPalette(_bubblePalette->palette());
  connect(_bubblePalette, SIGNAL(changed(ColorPalette)), _bubbleLayer, SLOT(setPalette(const ColorPalette&)));
  connect(_bubbleLayer, SIGNAL(paletteChanged(ColorPalette)), _bubblePalette, SLOT(setPalette(const ColorPalette &)));
  _bubbleNameLayer=new NameLineLayer (w);
  _bubbleNameLayer->setObjectName("Stations");
  _bubbleNameLayer->setErrorBar(NameLineLayer::NoBar);
  StationLine * line;
  line=new StationLine;
  line->setPen(Pen(Qt::NoPen));
  _bubbleNameLayer->setReferenceLine(line);
}
virtual void MonoStation::AbstractSummary::createGraphs ( bool  multiStations) [protected, pure virtual]

Implemented in HVSummary, and SpectrumSummary.

Referenced by setStations().

void MonoStation::AbstractSummary::createGridCrossSectionGraph ( double  x,
double  y 
) [protected]

References SciFigs::GraphicSheetMenu::addGraph(), SciFigs::GraphContentLayer::graph(), SciFigs::GraphicSheetMenu::setGraphGeometry(), SciFigs::AbstractLine::setPen(), SciFigs::LineLayer::setReferenceLine(), SciFigs::AbstractLine::setSymbol(), SciFigs::Axis::setTitle(), SciFigs::Axis::title, TRACE, w, SciFigs::AxisWindow::xAxis(), and SciFigs::AxisWindow::yAxis().

{
  TRACE;
  ASSERT(!_gridCrossSectionLayer);
  ASSERT(_stackedLayer);
  ASSERT(_spectrumGridLayer);

  AxisWindow * w=addGraph();
  setGraphGeometry(w, x, 16.0, y+0.5, 6.0);
  w->xAxis()->setTitle(_spectrumGridLayer->graph()->yAxis()->title());
  w->yAxis()->setTitle(_stackedLayer->graph()->yAxis()->title());
  _gridCrossSectionLayer=new LineLayer(w);
  _gridCrossSectionLayer->setObjectName( "CrossSections" );
  PlotLine2D * line;
  line=new PlotLine2D;
  line->setPen(Pen( Qt::black, 0.6) );
  line->setSymbol(Symbol( Symbol::Circle, 1.2, Pen(Qt::black, 0.6),
                              Brush(Qt::black, Qt::SolidPattern) ));
  _gridCrossSectionLayer->setReferenceLine(line);
}
void MonoStation::AbstractSummary::createSpectrumGridGraph ( double  x,
double  y 
) [protected]

References SciFigs::GraphicSheetMenu::_sheet, SciFigs::GraphicSheetMenu::addGraph(), SciFigs::GraphicSheet::addObject(), SciFigs::GraphContentLayer::addTrackingAction(), SciFigs::ColorPaletteWidget::defaultHSVColors(), SciFigs::GraphContentLayer::graph(), SciFigs::ColorPaletteWidget::palette(), SciFigs::GraphicSheetMenu::setFrequencyTitles(), SciFigs::GraphicSheetMenu::setGraphGeometry(), SciFigs::ColorPaletteWidget::setNumberPrecision(), SciFigs::GraphicObject::setObjectName(), SciFigs::ColorPaletteWidget::setOrientation(), SciFigs::GridPlot::setPalette(), SciFigs::GraphicObject::setPrintHeight(), SciFigs::GraphicObject::setPrintWidth(), SciFigs::GraphicObject::setPrintXAnchor(), SciFigs::GraphicObject::setPrintYAnchor(), SciFigs::ColorPaletteWidget::setTitle(), SciFigs::Axis::title, QGpCoreTools::tr(), TRACE, w, QGpCoreTools::YAxis, and SciFigs::AxisWindow::yAxis().

Referenced by HVSummary::createGraphs(), and SpectrumSummary::createGraphs().

{
  TRACE;
  ASSERT(!_spectrumGridLayer);
  ASSERT(_stackedLayer);

  AxisWindow * w=addGraph();
  setGraphGeometry(w, x, 16.0, y+0.5, 8.0);

  ColorPaletteWidget * pal=new ColorPaletteWidget(0);
  pal->setObjectName( "SpectrumPalette" );
  pal->defaultHSVColors(255, 230, 128);
  pal->setNumberPrecision(2);
  pal->setOrientation(Axis::West);
  pal->setTitle(_stackedLayer->graph()->yAxis()->title());
  pal->setPrintXAnchor(x+16.5);
  pal->setPrintYAnchor(y+1.0);
  pal->setPrintWidth(1.3);
  pal->setPrintHeight(6.0);
  _sheet.addObject(pal);

  setFrequencyTitles(w, tr( "Distance along profile" ),
                      tr( "1/Distance along profile" ), Number::Fixed);
  _spectrumGridLayer=new IrregularGrid2DPlot (w);
  _spectrumGridLayer->setPalette(pal->palette());
  connect(pal, SIGNAL(changed(ColorPalette)), _spectrumGridLayer, SLOT(setPalette(const ColorPalette&)));
  connect(_spectrumGridLayer, SIGNAL(paletteChanged(ColorPalette)), pal, SLOT(setPalette(const ColorPalette &)));
  _spectrumGridLayer->setObjectName( "SpectrumGrid" );
  _spectrumGridMaxLayer=new GridMaxFollower(_spectrumGridLayer, YAxis);
  _spectrumGridMaxLayer->setObjectName( "MaxCurves" );
  _spectrumGridMaxLayer->addTrackingAction(tr("&Pick maximum"), GridMaxFollower::Pick, tr("Pick a new maximum."));
  _spectrumGridMaxLayer->addTrackingAction(tr("&Edit"), GridMaxFollower::Edit, tr("Edit points of an existing line."));
}
void MonoStation::AbstractSummary::createStackedGraph ( QString  yAxisTitle,
double  x,
double  y 
) [protected]

References SciFigs::GraphicSheetMenu::addGraph(), SciFigs::GraphicSheetMenu::setFrequencyTitles(), SciFigs::GraphicSheetMenu::setGraphGeometry(), SciFigs::AbstractLine::setPen(), SciFigs::LineLayer::setReferenceLine(), SciFigs::AbstractLine::setSymbol(), TRACE, and w.

Referenced by HVSummary::createGraphs(), and SpectrumSummary::createGraphs().

{
  TRACE;
  ASSERT(!_stackedLayer);

  AxisWindow * w=addGraph();
  setGraphGeometry(w, x, 8.0, y+0.5, 8.0);
  setFrequencyTitles(w, yAxisTitle, "", Number::Fixed);
  _stackedLayer=new LineLayer(w);
  _stackedLayer->setObjectName( "Curves" );
  PlotLine2D * line;
  line=new PlotLine2D;
  line->setPen(Pen( Qt::SolidLine) );
  line->setSymbol(Symbol( Symbol::NoSymbol) );
  _stackedLayer->setReferenceLine(line);
}

References QGpCoreTools::Curve< pointType >::append(), and QGpCoreTools::Curve< pointType >::project().

Referenced by setStations().

{
  // Calculate the best fitting cross section
  Curve<Point> statList;
  for(QList<StationResults *>::const_iterator it=_stations.begin();it!=_stations.end();++it) {
    statList.append((*it)->coordinates());
  }
  // For each station I get its projection on the line (listed in the same order)
  QVector<double> distances=statList.project();
  // Create a map to sort distances
  QMap<double, StationResults *> dist2stat;
  for(int i=_stations.count() - 1;i >= 0;i-- ) {
    dist2stat.insert(distances[ i ], _stations.at(i) );
  }
  return dist2stat;
}
{return _gridCrossSectionLayer;}

Geometrical average for amplitudes and arithmetic average for frequencies.

References SciFigs::ParallelBands::addBand(), SciFigs::LineLayer::addLine(), MonoStation::StationResults::averageCurve(), SciFigs::ParallelBands::band(), SciFigs::ParallelBands::clear(), SciFigs::LineLayer::clear(), MonoStation::StationResults::peak(), MonoStation::StationResults::peakCount(), MonoStation::StationResults::PeakFrequency, SciFigs::PlotLine2D::setCurve(), SciFigs::ParallelBand::setMaximum(), SciFigs::ParallelBand::setMinimum(), SciFigs::AbstractLine::setPen(), QGpCoreTools::sqrt(), TRACE, QGpCoreTools::Curve< pointType >::yExp10(), QGpCoreTools::Curve< pointType >::yInverse(), QGpCoreTools::Curve< pointType >::yLog10(), QGpCoreTools::Curve< pointType >::yMultiply(), QGpCoreTools::Curve< pointType >::ySetMinimumValue(), QGpCoreTools::Curve< pointType >::ySetValue(), QGpCoreTools::Curve< pointType >::ySqrt(), QGpCoreTools::Curve< pointType >::ySquare(), and QGpCoreTools::Curve< pointType >::ySum().

Referenced by HVSummary::setValues(), and SpectrumSummary::setValues().

{
  TRACE;
  if(!_averageLayer) return;
  // Add the curve to the curve plot
  _averageLayer->clear();
  Curve<Point2D> sum, sum2, curve;
  double peakSum=0.0, peakSum2=0.0;
  int n=0, peakn=0;
  for(QList<StationResults *>::const_iterator it=_stations.begin(); it!=_stations.end(); ++it) {
    const StationResults& res=**it;
    curve=res.averageCurve();
    curve.yLog10();
    sum.ySum(curve);
    curve.ySquare();
    sum2.ySum(curve);
    n++;
    if(res.peakCount()>0) {
      double peak=res.peak(0, StationResults::PeakFrequency);
      peakSum+=peak;
      peakSum2+=peak*peak;
      peakn++;
    }
  }
  if(n>0) {
    // Average layer
    sum.yMultiply(1.0/(double)n);
    curve=sum;
    curve.ySquare();
    curve.yMultiply(-n);
    sum2.ySum(curve);
    if(n<2) {
      sum2.ySetValue(0.0);
    } else {
      sum2.yMultiply(1.0/(double)(n-1));
      sum2.ySetMinimumValue(0.0);
      sum2.ySqrt();
    }
    sum.yExp10();
    sum2.yExp10();
    Curve<Point2D> max=sum;
    max.yMultiply(sum2);
    Curve<Point2D> min=sum;
    sum2.yInverse();
    min.yMultiply(sum2);
    PlotLine2D * l;
    l=static_cast<PlotLine2D *>(_averageLayer->addLine());
    l->setPen(Pen(Qt::black, 0.6, Qt::DashLine));
    l->setCurve(min);
    l=static_cast<PlotLine2D *>(_averageLayer->addLine());
    l->setPen(Pen(Qt::black, 0.6, Qt::DashLine));
    l->setCurve(max);
    l=static_cast<PlotLine2D *>(_averageLayer->addLine());
    l->setCurve(sum);
  }
  _averagePeakLayer->clear();
  if(peakn>0) {
    // Average peak layer
    peakSum/=(double)peakn;
    if(peakn<2) {
      peakSum2=0.0;
    } else {
      peakSum2=(peakSum2-peakn*peakSum*peakSum)/(double)(peakn-1);
      if(peakSum2<0.0) {
        peakSum2=0.0;
      }
      peakSum2=sqrt(peakSum2);
    }
    double f0=peakSum;
    double df0=peakSum2;
    _averagePeakLayer->addBand(QColor(Qt::lightGray));
    _averagePeakLayer->addBand(QColor(Qt::gray));
    ParallelBand& b1=_averagePeakLayer->band(0);
    b1.setMinimum(f0-df0);
    b1.setMaximum(f0);
    ParallelBand& b2=_averagePeakLayer->band(1);
    b2.setMinimum(f0);
    b2.setMaximum(f0+df0);
  }
}

References SciFigs::NameLineLayer::addLine(), MonoStation::StationResults::category(), MonoStation::StationResults::coordinates(), SciFigs::LineLayer::count(), SciFigs::GraphContentLayer::graph(), SciFigs::Legend::indexOf(), QGpCoreTools::Value< numberType >::isValid(), SciFigs::NameLineLayer::line(), MonoStation::StationResults::PeakAmplitude, MonoStation::StationResults::PeakFrequency, MonoStation::StationLine::setLabel(), MonoStation::StationLine::setLabelPrecision(), SciFigs::XYValuePlot::setLogPalette(), MonoStation::StationLine::setStation(), SciFigs::AbstractLine::setSymbol(), SciFigs::AbstractNameLine::setTextColor(), SciFigs::ColorPaletteWidget::setTitle(), MonoStation::StationLine::setValue(), SciFigs::XYValuePlot::setValues(), SciFigs::XYPlot::setXData(), SciFigs::XYPlot::setYData(), SciFigs::Legend::symbol(), SciFigs::Legend::textColor(), SciFigs::Axis::title, QGpCoreTools::tr(), TRACE, QGpCoreTools::Value< numberType >::value(), MonoStation::StationLine::value(), SciFigs::XYValuePlot::valueRange(), w, QGpCoreTools::Point2D::x(), QGpCoreTools::Point2D::y(), and SciFigs::AxisWindow::yAxis().

Referenced by HVSummary::setValues().

{
  TRACE;
  if(!_bubbleLayer) return;
  ASSERT(_stackedLayer);
  AxisWindow * w=_stackedLayer->graph();
  switch(_mapPeakValue) {
  case StationResults::PeakFrequency:
    _bubblePalette->setTitle(tr("%1 peak frequency (Hz)").arg(w->yAxis()->title()));
    break;
  case StationResults::PeakAmplitude:
    _bubblePalette->setTitle(tr("%1 peak amplitude").arg(w->yAxis()->title()));
    break;
  }

  QVector<double> * xBubble=new QVector<double>;
  QVector<double> * yBubble=new QVector<double>;
  QVector<double> * valBubble=new QVector<double>;
  int n=_stations.count();
  for(int i=0; i<n; i++) {
    StationResults * res=_stations.at(i);
    // Adjust the number of stations, TODO: when old result plot will be ok, revise this part
    if(i==_bubbleNameLayer->count()) {
      StationLine * l =static_cast<StationLine *>(_bubbleNameLayer->addLine());
      l->setStation(res);
    }
    Point rec=res->coordinates();
    StationLine * l=static_cast<StationLine *>(_bubbleNameLayer->line(i));
    l->setValue(_mapPeakSelection, _mapPeakValue, _mapPeakIndex);
    if(l->value().isValid() && _mapShowBubbles) {
      xBubble->append(rec.x());
      yBubble->append(rec.y());
      valBubble->append(l->value().value());
    }
    // Adjust category of station point
    int categoryIndex=_categories.indexOf(res->category());
    ASSERT(categoryIndex>-1);
    l->setLabel(_mapLabels);
    l->setLabelPrecision(_mapPeakValueDecimals);
    l->setSymbol(_categories.symbol(categoryIndex));
    l->setTextColor(_categories.textColor(categoryIndex));
  }
  _bubbleLayer->setXData(xBubble);
  _bubbleLayer->setYData(yBubble);
  _bubbleLayer->setValues(valBubble);

  double min=1e99, max=-1e99;
  _bubbleLayer->valueRange(min, max);
  _bubbleLayer->setLogPalette(min, max);
}
void MonoStation::AbstractSummary::setLimits ( ) [virtual, slot]

References SciFigs::IrregularGrid2DPlot::boundingRect(), SciFigs::LineLayer::boundingRect(), QGpCoreTools::Rect::enlarge(), SciFigs::GraphContentLayer::graph(), QGpCoreTools::LinearScale, SciFigs::IrregularGrid2DPlot::setLinearPalette(), SciFigs::AxisWindow::setMapScale(), SciFigs::GraphicObject::setPrintHeight(), SciFigs::GraphicObject::setPrintWidth(), SciFigs::Axis::setRange(), TRACE, w, QGpCoreTools::Rect::x1(), QGpCoreTools::Rect::x2(), SciFigs::AxisWindow::xAxis(), QGpCoreTools::Rect::y1(), QGpCoreTools::Rect::y2(), and SciFigs::AxisWindow::yAxis().

Referenced by setStations().

{
  TRACE;
  Rect r;

  if(_stackedLayer) {
    r=_stackedLayer->boundingRect();
    AxisWindow * w=_stackedLayer->graph();
    w->xAxis() ->setRange(r.x1(), r.x2());
    w->yAxis() ->setRange(0, r.y2());
  }
  if(_averageLayer) {
    r=_averageLayer->boundingRect();
    AxisWindow * w=_averageLayer->graph();
    w->xAxis() ->setRange(r.x1(), r.x2());
    w->yAxis() ->setRange(0, r.y2());
  }
  if(_spectrumGridLayer) { // stacked is always there if spectrum is available
    // r.y2() comes from stacked
    _spectrumGridLayer->setLinearPalette(0, r.y2());
    r=_spectrumGridLayer->boundingRect();
    AxisWindow * w=_spectrumGridLayer->graph();
    w->xAxis() ->setRange(r.x1(), r.x2());
    w->yAxis() ->setRange(r.y1(), r.y2());
    if(_gridCrossSectionLayer) {
      _gridCrossSectionLayer->graph()->xAxis() ->setRange(r.y1(), r.y2());
    }
  }
  if(_bubbleLayer) {
    r=_bubbleNameLayer->boundingRect();
    r.enlarge(0.2, LinearScale, LinearScale);
    // init to default size
    AxisWindow * w=_bubbleLayer->graph();
    w->setPrintWidth(8.0);
    w->setPrintHeight(8.0);
    w->setMapScale(r.x1(), r.y1(), r.x2(), r.y2());
  }
}
void MonoStation::AbstractSummary::setSpectrumGridValues ( const QMap< double, StationResults * > *  dist2stat) [protected]

References MonoStation::StationResults::averageCurve(), QGpCoreTools::Curve< pointType >::count(), SciFigs::IrregularGrid2DPlot::setGrid(), QGpCoreTools::IrregularGrid2D::setX(), QGpCoreTools::IrregularGrid2D::setY(), TRACE, QGpCoreTools::IrregularGrid2D::valuePointer(), and MonoStation::StationResults::windowCount().

Referenced by HVSummary::setValues(), and SpectrumSummary::setValues().

{
  TRACE;
  if( !_spectrumGridLayer || !dist2stat) return;
  // Grab general info from the first station with non null average curve
  const StationResults * res=0;
  QMap<double, StationResults *>::const_iterator it=dist2stat->begin();
  for(it=dist2stat->begin();it!=dist2stat->end();it++) {
    res=it.value();
    if(res->averageCurve().count()>0) break;
    res=0;
  }
  if(!res) return;
  // Init the colored grid
  const Curve<Point2D>& f=res->averageCurve();
  int nFreqSamp=f.count();
  int nDist=dist2stat->count();
  IrregularGrid2D grid(nFreqSamp, nDist);

  // Set the sampling of the grid
  for(int i=0;i < nFreqSamp;i++ ) {
    grid.setX(i, f[i].x());
  }
  // Get the minimum to shift all from 0 to ...
  int i=0;
  double minDist=dist2stat->begin().key();
  for(it=dist2stat->begin();it!=dist2stat->end();it++, i++) {
    grid.setY(i, it.key() - minDist);
  }

  // Fill in the grid with the spectra
  i=0;
  for(it=dist2stat->begin();it!=dist2stat->end();it++, i++) {
    const StationResults * res=it.value();
    double * gval=grid.valuePointer(0, i);
    if(res->windowCount()>0) {
      const Curve<Point2D>& c=res->averageCurve();
      for(int j=0;j < nFreqSamp;j++ ) {
        gval[ j ]=c[ j ].y();
      }
    } else {
      for(int j=0;j < nFreqSamp;j++ ) {
        gval[ j ]=0.0;
      }
    }
  }
  _spectrumGridLayer->setGrid(grid);
}

References SciFigs::LineLayer::addLine(), MonoStation::StationResults::averageCurve(), SciFigs::LineLayer::clear(), and TRACE.

Referenced by HVSummary::setValues(), and SpectrumSummary::setValues().

{
  TRACE;
  if( !_stackedLayer) return;
  // Add the curve to the curve plot
  _stackedLayer->clear();
  for(QList<StationResults *>::const_iterator it=_stations.begin();it!=_stations.end();++it) {
    const StationResults& res=**it;
    static_cast<PlotLine2D *>(_stackedLayer->addLine())->setCurve(res.averageCurve());
  }
}
void MonoStation::AbstractSummary::setStations ( const QList< AbstractStation * > &  stations) [virtual]

References createGraphs(), SciFigs::GraphicSheet::deepUpdate(), distance2Station(), geopsyGui, setLimits(), SciFigs::GraphicSheet::setStatusBar(), SciFigs::Legend::setTexts(), setValues(), SciFigs::GraphicSheetMenu::sheet(), TRACE, and QGpCoreTools::unique().

{
  TRACE;
  _stations.clear();
  for(QList<AbstractStation *>::const_iterator it=stations.begin();it!=stations.end();++it) {
    _stations.append((*it)->results(0));
  }

  // Adjust the list of categories keeping format for exiting ones
  QStringList cats;
  for(QList<StationResults *>::const_iterator it=_stations.begin();it!=_stations.end();++it) {
    cats.append((*it)->category());
  }
  qSort(cats);
  unique(cats);
  static const Pen defaultPen(Qt::black, 0, Qt::NoPen);
  static const Symbol defaultSymbol(Symbol::Circle, 2.5, Pen(Qt::black), Brush(Qt::NoBrush) );
  _categories.setTexts(cats, defaultPen, defaultSymbol);

  QMap<double, StationResults *> dist2stat=distance2Station();
  if(_stackedLayer==0) {
    // Initialize graphs according to the availability of coordinates
    sheet()->setStatusBar(geopsyGui->statusBar());
    createGraphs(dist2stat.count() > 1);
  }

  setValues(&dist2stat);

  sheet()->deepUpdate();
  setLimits();
}
virtual void MonoStation::AbstractSummary::setValues ( const QMap< double, StationResults * > *  dist2stat = 0) [protected, pure virtual]

Implemented in HVSummary, and SpectrumSummary.

Referenced by setStations().

virtual void MonoStation::AbstractSummary::setWindowTitle ( QString  subPoolName) [pure virtual]

Implemented in HVSummary, and SpectrumSummary.

Referenced by HVSummary::setValues(), and SpectrumSummary::setValues().

{return _spectrumGridLayer;}
{return _spectrumGridMaxLayer;}
LineLayer* MonoStation::AbstractSummary::stackedLayer ( ) const [inline, protected]
{return _stackedLayer;}

Member Data Documentation

Referenced by addActions().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines