All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Public Member Functions
GeopsyGui::ArrayMap Class Reference

#include <ArrayMap.h>

Inheritance diagram for GeopsyGui::ArrayMap:
SciFigs::AxisWindow SciFigs::GraphicObject QGpGuiTools::PropertyContext QGpGuiTools::PropertyItem QGpCoreTools::XMLClass

List of all members.

Public Member Functions

AbstractNameLineaddLine ()
AbstractNameLineaddLine (const Pen &pen, const Symbol &sym)
 ArrayMap (QWidget *parent=0, AbstractNameLine *referenceLine=0)
int countPoints (double minR, double maxR)
AbstractNameLineline (int index)
NameLineLayermapLayer () const
void optimizeRing (double &minR, double &maxR)
void setLimitsArray ()
void setLimitsCoArray ()
void setObjectName (QString name)
 ~ArrayMap ()

Constructor & Destructor Documentation

GeopsyGui::ArrayMap::ArrayMap ( QWidget *  parent = 0,
AbstractNameLine referenceLine = 0 
)

References SciFigs::NameLineLayer::addLine(), SciFigs::GraphContentLayer::addTrackingAction(), SciFigs::LineLayer::setErrorBar(), SciFigs::AbstractLine::setPen(), SciFigs::Axis::setRange(), SciFigs::LineLayer::setReferenceLine(), SciFigs::Axis::setSizeInfo(), SciFigs::Axis::setSizeType(), SciFigs::AbstractLine::setSymbol(), SciFigs::Axis::setTitle(), QGpCoreTools::tr(), TRACE, SciFigs::AxisWindow::updateExternalGeometry(), SciFigs::AxisWindow::xAxis(), and SciFigs::AxisWindow::yAxis().

    : AxisWindow(parent)
{
  TRACE;
  ImageLayer * bg=new ImageLayer(this);
  bg->setObjectName("background");
  bg->addTrackingAction(tr("&Set image scale"), ImageLayer::Scale, tr("Click on at least two points to scale image."));

  _mapLayer=new NameLineLayer(this);
  _mapLayer->setErrorBar(LineLayer::NoBar);
  _mapLayer->setObjectName("map");
  if(!referenceLine) {
    referenceLine=new NameLine;
  }
  referenceLine->setPen(Pen( Qt::black, 0, Qt::NoPen) );
  referenceLine->setSymbol(Symbol( Symbol::Circle, 2.0, Pen(Qt::black, 0.0, Qt::NoPen),
                            Brush(Qt::black, Qt::SolidPattern) ));
  _mapLayer->setReferenceLine(referenceLine);
  _mapLayer->addLine(); // Must have at least one line (expected by spac tool for instance)

  xAxis()->setTitle( "X (m)" );
  xAxis()->setSizeType(Axis::Scaled);
  xAxis()->setSizeInfo(1000);
  xAxis()->setRange(0, 100);
  yAxis()->setTitle( "Y (m)" );
  yAxis()->setSizeType(Axis::Scaled);
  yAxis()->setSizeInfo(1000);
  yAxis()->setRange(0, 100);
  updateExternalGeometry();
}

References SciFigs::GraphicObject::objectName, and TRACE.

{
  TRACE;
  Settings::setSize(this, "ArrayMap"+objectName());
}

Member Function Documentation

Referenced by MapWindow::signalsUpdate().

{return _mapLayer->addLine();}
AbstractNameLine * GeopsyGui::ArrayMap::addLine ( const Pen pen,
const Symbol sym 
) [inline]

References SciFigs::NameLineLayer::addLine().

{
  return _mapLayer->addLine(pen, sym);
}
int GeopsyGui::ArrayMap::countPoints ( double  minR,
double  maxR 
)

References SciFigs::AbstractLine::count(), SciFigs::LineLayer::count(), QGpCoreTools::Point::distanceTo(), line(), SciFigs::AbstractLine::point(), and TRACE.

{
  TRACE;
  int count=0;
  Point origin(0, 0, 0);
  int n=_mapLayer->count();
  for(int i=0;i < n;i++ ) {
    AbstractNameLine * l=line(i);
    int np=l->count();
    for(int j=0;j < np; j++ ) {
      double r=origin.distanceTo(l->point(j, 0) );
      if(r >= minR && r <= maxR) count++;
    }
  }
  return count;
}
AbstractNameLine* GeopsyGui::ArrayMap::line ( int  index) [inline]

Referenced by countPoints(), and optimizeRing().

{return _mapLayer->line(index);}
void GeopsyGui::ArrayMap::optimizeRing ( double &  minR,
double &  maxR 
)

References SciFigs::AbstractLine::count(), SciFigs::LineLayer::count(), QGpCoreTools::Point::distanceTo(), line(), SciFigs::AbstractLine::point(), and TRACE.

{
  TRACE;
  double newMinR=maxR, newMaxR=minR;
  Point origin(0, 0, 0);
  int n=_mapLayer->count();
  for(int i=0;i < n;i++ ) {
    AbstractNameLine * l=line(i);
    int np=l->count();
    for(int j=0;j < np;j++ ) {
      double r=origin.distanceTo(l->point(j, 0) );
      if(r >= minR && r <= maxR) {
        if(r > newMaxR) newMaxR=r;
        if(r < newMinR) newMinR=r;
      }
    }
  }
  minR=newMinR;
  maxR=newMaxR;
}

References SciFigs::LineLayer::boundingRect(), SciFigs::AxisWindow::setMapScale(), TRACE, QGpCoreTools::Rect::x1(), QGpCoreTools::Rect::x2(), QGpCoreTools::Rect::y1(), and QGpCoreTools::Rect::y2().

{
  TRACE;
  Rect r=_mapLayer->boundingRect();
  double dmax=fabs(r.x1());
  if(fabs( r.x2()) > dmax) dmax=fabs(r.x2());
  if(fabs( r.y1()) > dmax) dmax=fabs(r.y1());
  if(fabs( r.y2()) > dmax) dmax=fabs(r.y2());
  dmax *= 1.05;
  setMapScale( -dmax, 0, dmax, dmax);
}
void GeopsyGui::ArrayMap::setObjectName ( QString  name) [virtual]

Re-implemetation of QWidget::setObjectName(const char * name) It is used to avoid duplicate names inside the same GraphicSheet

Reimplemented from SciFigs::GraphicObject.

References TRACE.

Referenced by MapWindow::MapWindow().

{
  TRACE;
  QWidget::setObjectName(name);
  Settings::getSize(this, "ArrayMap"+name);
}

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