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

Brief description of class still missing Abstract line with points and names. More...

#include <AbstractNameLine.h>

Inheritance diagram for SciFigs::AbstractNameLine:
SciFigs::AbstractLine QGpCoreTools::XMLClass MonoStation::StationLine SciFigs::NameLine

List of all members.

Public Member Functions

 AbstractNameLine ()
virtual bool fromString (int index, const StringSection &str, const QChar *&ptr, const CurvePointOptions *)
virtual QString name (int index) const =0
void operator= (const AbstractNameLine &o)
virtual void setName (int index, QString n)=0
void setTextColor (const QColor &c)
void setTextDx (double dx)
void setTextDy (double dy)
void setTextOrientation (double orientation)
QColor textColor () const
double textDx () const
double textDy () const
double textOrientation () const
virtual QString toString (int index, const CurvePointOptions *options) const
virtual const QString & xml_tagName () const

Static Public Attributes

static const QString xmlAbstractNameLineTag = "NameLine"

Protected Member Functions

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

Protected Attributes

QColor _textColor
double _textDx
double _textDy
double _textOrientation

Detailed Description

Brief description of class still missing Abstract line with points and names.


Constructor & Destructor Documentation

{_textDx=0.0; _textDy=0.01; _textOrientation=0.0;}

Member Function Documentation

bool SciFigs::AbstractNameLine::fromString ( int  index,
const StringSection str,
const QChar *&  ptr,
const CurvePointOptions options 
) [virtual]

Reimplemented from SciFigs::AbstractLine.

References QGpCoreTools::StringSection::isValid(), QGpCoreTools::StringSection::nextField(), setName(), SciFigs::AbstractLine::setX(), SciFigs::AbstractLine::setY(), SciFigs::AbstractLine::setZ(), QGpCoreTools::StringSection::toDouble(), QGpCoreTools::StringSection::toString(), and TRACE.

Referenced by xml_setProperty().

{
  TRACE;
  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()) {
    double z=f.toDouble(&ok);
    if(ok) { // Z is optional
      setZ(index, z, options);
      oldPtr=ptr;
    } else {
      setZ(index, 0.0, options);
      ptr=oldPtr;
    }
    f=str.nextField(ptr, "\r\n", false);
    if(f.isValid()) {
      setName(index, f.toString());
    } else {
      setName(index, QString::null);
      ptr=oldPtr;
    }
  } else { // Z and Name are optional
    setZ(index, 0.0, options);
    setName(index, QString::null);
    ptr=oldPtr;
  }
  return true;
}
virtual QString SciFigs::AbstractNameLine::name ( int  index) const [pure virtual]
void SciFigs::AbstractNameLine::operator= ( const AbstractNameLine o)

References _textColor, _textDx, _textDy, and _textOrientation.

{
  _textColor=o._textColor;
  _textDx=o._textDx;
  _textDy=o._textDy;
  _textOrientation=o._textOrientation;
  AbstractLine::operator=(o);
}
virtual void SciFigs::AbstractNameLine::setName ( int  index,
QString  n 
) [pure virtual]

Implemented in MonoStation::StationLine, and SciFigs::NameLine.

Referenced by fromString().

void SciFigs::AbstractNameLine::setTextColor ( const QColor &  c) [inline]
void SciFigs::AbstractNameLine::setTextDx ( double  dx) [inline]
void SciFigs::AbstractNameLine::setTextDy ( double  dy) [inline]
void SciFigs::AbstractNameLine::setTextOrientation ( double  orientation) [inline]

Referenced by SciFigs::NameLineItem::setData().

{_textOrientation=orientation;}
QColor SciFigs::AbstractNameLine::textColor ( ) const [inline]
double SciFigs::AbstractNameLine::textDx ( ) const [inline]
double SciFigs::AbstractNameLine::textDy ( ) const [inline]
double SciFigs::AbstractNameLine::textOrientation ( ) const [inline]
QString SciFigs::AbstractNameLine::toString ( int  index,
const CurvePointOptions options 
) const [virtual]

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 SciFigs::AbstractLine.

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

{
  TRACE;
  XMLSciFigs * scifigsContext=static_cast<LineLayerContext *>(context)->parent();
  if(scifigsContext->data()) {
    if(tag=="points") return XMLMember(0);
  }
  if(scifigsContext->makeUp()) {
    if(tag=="dx") return XMLMember(1);
    else if(tag=="dy") return XMLMember(2);
    else if(tag=="orientation") return XMLMember(3);
    else if(tag=="color") return XMLMember(4);
  }
  return AbstractLine::xml_member(tag, attributes, context)+5;
}

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 SciFigs::AbstractLine.

References _textColor, _textDx, _textDy, _textOrientation, SciFigs::AbstractLine::append(), SciFigs::AbstractLine::clear(), fromString(), SciFigs::LineLayerContext::options(), SciFigs::AbstractLine::removeLast(), and TRACE.

{
  TRACE;
  Q_UNUSED(tag);
  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:
    _textDx=content.toDouble();
    return true;
  case 2:
    _textDy=content.toDouble();
    return true;
  case 3:
    _textOrientation=content.toDouble();
    return true;
  case 4: {
      QColor col(content.toString());
      _textColor=col;
      return true;
    }
    return true;
  default:
    return AbstractLine::xml_setProperty(memberID-5, tag, attributes, content, context);
  }
}
virtual const QString& SciFigs::AbstractNameLine::xml_tagName ( ) const [inline, virtual]

Reimplemented from SciFigs::AbstractLine.

Reimplemented in MonoStation::StationLine, and SciFigs::NameLine.

Reimplemented from SciFigs::AbstractLine.

References _textColor, _textDx, _textDy, _textOrientation, SciFigs::XMLSciFigs::makeUp(), TRACE, and QGpCoreTools::XMLClass::writeProperty().

{
  TRACE;
  XMLSciFigs * scifigsContext=static_cast<LineLayerContext *>(context)->parent();
  if(scifigsContext->makeUp()) {
    writeProperty(s, "color",_textColor.name());
    writeProperty(s, "dx",_textDx);
    writeProperty(s, "dy",_textDy);
    writeProperty(s, "orientation",_textOrientation);
  }
  AbstractLine::xml_writeProperties(s, context);
}

Member Data Documentation

const QString SciFigs::AbstractNameLine::xmlAbstractNameLineTag = "NameLine" [static]

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