All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes
SciFigs::AbstractLine Class Reference

An abstract class for ploting curves with pen and symbol properties. More...

#include <AbstractLine.h>

Inheritance diagram for SciFigs::AbstractLine:
QGpCoreTools::XMLClass QGpGuiWave::MagnetoTelluricLine QGpGuiWave::ModalLine QGpGuiWave::RefractionLine SciFigs::AbstractNameLine SciFigs::ComplexStatisticalLine SciFigs::PlotLine SciFigs::PlotLine2D SciFigs::RealStatisticalLine

List of all members.

Public Member Functions

 AbstractLine ()
virtual void append ()=0
virtual void clear ()=0
virtual AbstractLineclone () const =0
virtual int count () const =0
virtual bool fromString (int index, const StringSection &str, const QChar *&ptr, const CurvePointOptions *options)
virtual void insert (int index)=0
bool isEditable () const
bool isSelected () const
virtual bool isValid (int) const
bool isVisible () const
virtual void operator= (const AbstractLine &o)
const Penpen () const
virtual Point point (int index, const CurvePointOptions *options) const =0
virtual void removeLast ()=0
void setEditable (bool e)
void setPen (const Pen &p)
void setSelected (bool s)
void setSymbol (const Symbol &s)
virtual void setValid (int, bool)
void setVisible (bool v)
virtual void setX (int index, double v)=0
virtual void setY (int index, double v, const CurvePointOptions *options)=0
virtual void setZ (int index, double v, const CurvePointOptions *options)=0
const Symbolsymbol () const
virtual QString toString (int index, const CurvePointOptions *options) const
virtual const QString & xml_tagName () const
virtual ~AbstractLine ()

Static Public Attributes

static const QString xmlAbstractLineTag = "Line"

Protected Member Functions

virtual XMLMember xml_member (XML_MEMBER_ARGS)
virtual bool xml_setProperty (XML_SETPROPERTY_ARGS)
virtual void xml_writeChildren (XML_WRITECHILDREN_ARGS) const
virtual void xml_writeProperties (XML_WRITEPROPERTIES_ARGS) const

Protected Attributes

uint _editable: 1
Pen _pen
uint _selected: 1
Symbol _symbol
uint _unused: 29
uint _visible: 1

Detailed Description

An abstract class for ploting curves with pen and symbol properties.


Constructor & Destructor Documentation

{_selected=false; _visible=true; _editable=true;}
virtual SciFigs::AbstractLine::~AbstractLine ( ) [inline, virtual]
{}

Member Function Documentation

virtual void SciFigs::AbstractLine::append ( ) [pure virtual]
virtual void SciFigs::AbstractLine::clear ( ) [pure virtual]
virtual AbstractLine* SciFigs::AbstractLine::clone ( ) const [pure virtual]
virtual int SciFigs::AbstractLine::count ( ) const [pure virtual]
bool SciFigs::AbstractLine::fromString ( int  index,
const StringSection str,
const QChar *&  ptr,
const CurvePointOptions options 
) [virtual]

Reimplemented in SciFigs::AbstractNameLine.

References QGpCoreTools::StringSection::isValid(), QGpCoreTools::StringSection::nextField(), setX(), setY(), setZ(), and QGpCoreTools::StringSection::toDouble().

Referenced by xml_setProperty().

{
  bool ok=true;
  StringSection f;
  f=str.nextField(ptr);
  if(f.isValid()) {
    setX(index, f.toDouble(&ok));
    if(!ok) return false;
  } else {
    return false;
  }
  f=str.nextField(ptr);
  if(f.isValid()) {
    setY(index, f.toDouble(&ok), options);
    if(!ok) return false;
  } else {
    return false;
  }
  const QChar * oldPtr=ptr;
  f=str.nextField(ptr);
  if(f.isValid()) {
    setZ(index, f.toDouble(&ok), options);
    if(!ok) return false;
  } else { // Z is optional
    setZ(index, 0.0, options);
    ptr=oldPtr;
  }
  return true;
}
virtual void SciFigs::AbstractLine::insert ( int  index) [pure virtual]
bool SciFigs::AbstractLine::isEditable ( ) const [inline]

Referenced by xml_writeProperties().

{return _editable;}
bool SciFigs::AbstractLine::isSelected ( ) const [inline]
virtual bool SciFigs::AbstractLine::isValid ( int  ) const [inline, virtual]
bool SciFigs::AbstractLine::isVisible ( ) const [inline]
void SciFigs::AbstractLine::operator= ( const AbstractLine o) [virtual]

If overloaded you must call this function in your implementation.

References _editable, _pen, _selected, _symbol, and _visible.

{
  _pen=o._pen;
  _symbol=o._symbol;
  _selected=o._selected;
  _visible=o._visible;
  _editable=o._editable;
}
const Pen& SciFigs::AbstractLine::pen ( ) const [inline]
virtual Point SciFigs::AbstractLine::point ( int  index,
const CurvePointOptions options 
) const [pure virtual]
virtual void SciFigs::AbstractLine::removeLast ( ) [pure virtual]
void SciFigs::AbstractLine::setEditable ( bool  e) [inline]
{_editable=e;}
void SciFigs::AbstractLine::setPen ( const Pen p) [inline]

Referenced by AutocorrTargetWidget::addCurve(), SciFigs::LineLayer::addLine(), GeopsyGui::ArrayMap::ArrayMap(), MonoStation::AbstractSummary::createAverageGraph(), MonoStation::AbstractSummary::createBubbleGraph(), createCurve(), createCurveName(), createCurveNamePlot(), createCurvePlot(), MonoStation::AbstractSummary::createGridCrossSectionGraph(), MonoStation::StatisticResults::createObjects(), DampingResults::createObjects(), SpacSelector::createObjects(), ArrayGui::ArrayResponse::createObjects(), MonoStation::AbstractSummary::createStackedGraph(), QGpGuiWave::DispersionLimitLayer::DispersionLimitLayer(), Simulator::displaySource(), SciFigs::GridMaxFollower::GridMaxFollower(), Simulator::init(), MagnetoTelluricTargetWidget::initLayer(), QGpGuiWave::ModalCurveBrowser::initLayer(), DinverDCGui::GroundModelViewer::minMaxProfiles(), ProcessStatus::ProcessStatus(), MonoStation::AbstractSummary::setAverageValues(), SciFigs::PlotLine2D::setCurve(), MonoStation::StationResults::setGraph(), SciFigs::NameLineLayer::setLegend(), SciFigs::LineLayer::setLegend(), SciFigs::LineLayer::setPenColor(), SciFigs::LineLayer::setPenStyle(), SciFigs::LineLayer::setReferencePen(), SciFigs::SlopeEstimator::SlopeEstimator(), SpacSelector::SpacSelector(), DinverDCGui::RefractionViewer::targetReferenceLine(), DinverDCGui::MagnetoTelluricViewer::targetReferenceLine(), DinverDCGui::DispersionViewer::targetReferenceLine(), DinverDCGui::GroundModelViewer::targetReferenceLine(), DinverDCGui::AutocorrViewer::targetReferenceLine(), and DinverDCGui::EllipticityViewer::targetReferenceLine().

{_pen=p;}
void SciFigs::AbstractLine::setSelected ( bool  s) [inline]
void SciFigs::AbstractLine::setSymbol ( const Symbol s) [inline]

Referenced by AutocorrTargetWidget::addCurve(), SciFigs::LineLayer::addLine(), GeopsyGui::ArrayMap::ArrayMap(), MonoStation::AbstractSummary::createAverageGraph(), createCurve(), createCurveName(), createCurveNamePlot(), createCurvePlot(), MonoStation::AbstractSummary::createGridCrossSectionGraph(), MonoStation::StatisticResults::createObjects(), SpacSelector::createObjects(), ArrayGui::ArrayResponse::createObjects(), MonoStation::AbstractSummary::createStackedGraph(), QGpGuiWave::DispersionLimitLayer::DispersionLimitLayer(), SciFigs::GridMaxFollower::GridMaxFollower(), Simulator::init(), MagnetoTelluricTargetWidget::initLayer(), QGpGuiWave::ModalCurveBrowser::initLayer(), DinverDCGui::GroundModelViewer::minMaxProfiles(), ProcessStatus::ProcessStatus(), MonoStation::AbstractSummary::setBubbleValues(), SciFigs::PlotLine2D::setCurve(), MonoStation::StationResults::setGraph(), SciFigs::NameLineLayer::setLegend(), SciFigs::LineLayer::setLegend(), SciFigs::LineLayer::setReferenceSymbol(), SciFigs::LineLayer::setSymBrushColor(), SciFigs::LineLayer::setSymBrushStyle(), SciFigs::LineLayer::setSymPenColor(), SciFigs::LineLayer::setSymPenStyle(), SciFigs::LineLayer::setSymSize(), SciFigs::LineLayer::setSymType(), SciFigs::SlopeEstimator::SlopeEstimator(), SpacSelector::SpacSelector(), DinverDCGui::RefractionViewer::targetReferenceLine(), DinverDCGui::MagnetoTelluricViewer::targetReferenceLine(), DinverDCGui::DispersionViewer::targetReferenceLine(), DinverDCGui::AutocorrViewer::targetReferenceLine(), DinverDCGui::GroundModelViewer::targetReferenceLine(), and DinverDCGui::EllipticityViewer::targetReferenceLine().

{_symbol=s;}
virtual void SciFigs::AbstractLine::setValid ( int  ,
bool   
) [inline, virtual]
void SciFigs::AbstractLine::setVisible ( bool  v) [inline]
{_visible=v;}
virtual void SciFigs::AbstractLine::setX ( int  index,
double  v 
) [pure virtual]
virtual void SciFigs::AbstractLine::setY ( int  index,
double  v,
const CurvePointOptions options 
) [pure virtual]
virtual void SciFigs::AbstractLine::setZ ( int  index,
double  v,
const CurvePointOptions options 
) [pure virtual]
const Symbol& SciFigs::AbstractLine::symbol ( ) const [inline]
virtual QString SciFigs::AbstractLine::toString ( int  index,
const CurvePointOptions options 
) const [inline, virtual]

Reimplemented in SciFigs::NameLine, and SciFigs::AbstractNameLine.

Referenced by xml_writeProperties().

{return point(index, options).toString(20);}

Re-implement this function to offer XML restore (children and properties) support to your class.

From tag and map (with contains the attibute value) return a unique identifier under the format of a XMLMember. XMLMember is initialized with 3 types of contructors:

  • An integer: id number of a property
  • A XMLClass * : a child of this object identified by tag
  • Default constructor: error, unknow child or property

Map of attributes can be inspected in this way (can be achived also in xml_setProperty()):

    static const QString tmp("childrenName");
    XMLRestoreAttributeIterator it=map.find(tmp);
    if(it!=map.end()) {
      // found attribute "childrenName"
    }

If the map of attributes is not used:

    Q_UNUSED(attributes);
    if(tag=="x1") return XMLMember(0);
    else if(tag=="y1") return XMLMember(1);
    else if(tag=="x2") return XMLMember(2);
    else if(tag=="y2") return XMLMember(3);
    else return XMLMember(XMLMember::Unknown);

Arithmetic operations + and - apply to XMLMember to avoid confusion of property id numbers between inherited objects. Offset 3 corresponds to the number of properties defined in this object.

    if(tag=="anInteger") return XMLMember(0);
    else if(tag=="aString") return XMLMember(1);
    else if(tag=="aDouble") return XMLMember(2);
    return AbstractLine::xml_member(tag, attributes, context)+3;

For the arguments of this function use Macro XML_MEMBER_ARGS.

Reimplemented from QGpCoreTools::XMLClass.

Reimplemented in SciFigs::AbstractNameLine.

References _pen, _symbol, SciFigs::XMLSciFigs::data(), SciFigs::XMLSciFigs::makeUp(), and TRACE.

{
  TRACE;
  Q_UNUSED(attributes);
  XMLSciFigs * scifigsContext=static_cast<LineLayerContext *>(context)->parent();
  if(scifigsContext->data()) {
    if(tag=="points") return XMLMember(0);
  }
  if(scifigsContext->makeUp()) {
    if(tag=="selected") return XMLMember(1);
    else if(tag=="visible") return XMLMember(2);
    else if(tag=="editable") return XMLMember(3);
    else if(tag=="Pen") return XMLMember(&_pen);
    else if(tag=="Symbol") return XMLMember(&_symbol);
  }
  return XMLMember(XMLMember::Unknown);
}

Re-implement this function to offer XML restore properties support to your class.

From memberID set the corresponding property with value content. The map of attributes is given as a supplementary information (not useful in all cases).

For a general case:

  Q_UNUSED(attributes);
  double val=content.toDouble();
  switch (memberID) {
  case 0:
    _x1=val;
    return true;
  case 1:
    _y1=val;
    return true;
  case 2:
    _x2=val;
    return true;
  case 3:
    _y2=val;
    return true;
  default:
    return false;
  }

For classes inheriting other classes (see also xml_member())

  switch (memberID) {
  case 0:
    _anInteger=content.toString();
    return true;
  case 1:
    _aString=content.toInt();
    return true;
  case 2:
    _aDouble=content.toDouble();
    return true;
  default:
    return AbstractLine::xml_setProperty(memberID-3, map, content);

For the arguments of this function use Macro XML_SETPROPERTY_ARGS.

Reimplemented from QGpCoreTools::XMLClass.

Reimplemented in SciFigs::AbstractNameLine.

References _editable, _selected, _visible, append(), clear(), fromString(), SciFigs::LineLayerContext::options(), removeLast(), and TRACE.

{
  TRACE;
  Q_UNUSED(tag);
  Q_UNUSED(attributes);
  Q_UNUSED(context);
  LineLayerContext * lineContext=static_cast<LineLayerContext *>(context);
  switch (memberID) {
  case 0: {
      const QChar * ptr=0;
      clear();
      int i=0;
      while(true) {
        append();
        if(!content.nextLine(ptr)) break;
        if(!fromString(i, content, ptr, lineContext->options())) break;
        i++;
      }
      removeLast();
    }
    return true;
  case 1:
    _selected=content.toBool();
    return true;
  case 2:
    _visible=content.toBool();
    return true;
  case 3:
    _editable=content.toBool();
    return true;
  default:
    return false;
  }
}
virtual const QString& SciFigs::AbstractLine::xml_tagName ( ) const [inline, virtual]

Reimplemented from QGpCoreTools::XMLClass.

References _pen, _symbol, SciFigs::XMLSciFigs::makeUp(), TRACE, and QGpCoreTools::XMLClass::xml_save().

{
  TRACE;
  XMLSciFigs * scifigsContext=static_cast<LineLayerContext *>(context)->parent();
  if(scifigsContext->makeUp()) {
    _pen.xml_save(s, context);
    _symbol.xml_save(s, context);
  }
}

Reimplemented from QGpCoreTools::XMLClass.

Reimplemented in SciFigs::AbstractNameLine.

References count(), SciFigs::XMLSciFigs::data(), QGpCoreTools::endl(), isEditable(), isSelected(), isValid(), isVisible(), SciFigs::XMLSciFigs::makeUp(), SciFigs::LineLayerContext::options(), SciFigs::LineLayerContext::parent(), toString(), TRACE, and QGpCoreTools::XMLClass::writeProperty().

{
  TRACE;
  ASSERT(context);
  LineLayerContext * lineContext=static_cast<LineLayerContext *>(context);
  XMLSciFigs * scifigsContext=lineContext->parent();
  CurvePointOptions * options=lineContext->options();
  if(scifigsContext->data()) {
    QString tmp;
    tmp+=s.indent();
    tmp+="<points>\n";
    int n=count();
    for(int j=0; j<n; j++) {
      if(isValid(j)) {
        tmp+=s.indent();
        tmp+="    ";
        tmp+=toString(j, options);
        tmp+="\n";
      }
    }
    tmp+=s.indent();
    tmp+="</points>";
    s << tmp << endl;
  }
  if(scifigsContext->makeUp()) {
    writeProperty(s, "selected",isSelected());
    writeProperty(s, "visible",isVisible());
    writeProperty(s, "editable",isEditable());
  }
}

Member Data Documentation

Referenced by operator=(), and xml_setProperty().

Referenced by operator=(), and xml_setProperty().

Referenced by operator=(), and xml_setProperty().

const QString SciFigs::AbstractLine::xmlAbstractLineTag = "Line" [static]

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