diff --git a/OpenRoadEd/OpenDrive/ObjectSignal.cpp b/OpenRoadEd/OpenDrive/ObjectSignal.cpp index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..624b75e4523bdffa56976d3204712f003d6a1d9f 100644 --- a/OpenRoadEd/OpenDrive/ObjectSignal.cpp +++ b/OpenRoadEd/OpenDrive/ObjectSignal.cpp @@ -0,0 +1,268 @@ +#include "ObjectSignal.h" + +Signal::Signal() +{ + mS=0.0; + mT=0.0; + mId="-1"; + mName=""; + mDynamic=false; + mOrientation="none"; + mZOffset=0.0; + mCountry=""; + mCountryRevision=""; + mType=""; + mSubType=""; + mValue=0.0; + mUnit=""; + mHeight=0.0; + mWidth=0.0; + mText=""; + mHeadingOffset=0.0; + mPitch=0.0; + mRoll=0.0; +} + +Signal::Signal(std::string &name,std::string &id) +{ + mS=0.0; + mT=0.0; + mId=id; + mName=name; + mDynamic=false; + mOrientation="none"; + mZOffset=0.0; + mCountry=""; + mCountryRevision=""; + mType=""; + mSubType=""; + mValue=0.0; + mUnit=""; + mHeight=0.0; + mWidth=0.0; + mText=""; + mHeadingOffset=0.0; + mPitch=0.0; + mRoll=0.0; +} + +Signal::Signal(const Signal &signal) +{ + mS=signal.mS; + mT=signal.mT; + mId=signal.mId; + mName=signal.mName; + mDynamic=signal.mDynamic; + mOrientation=signal.mOrientation; + mZOffset=signal.mZOffset; + mCountry=signal.mCountry; + mCountryRevision=signal.mCountryRevision; + mType=signal.mType; + mSubType=signal.mSubType; + mValue=signal.mValue; + mUnit=signal.mUnit; + mHeight=signal.mHeight; + mWidth=signal.mWidth; + mText=signal.mText; + mHeadingOffset=signal.mHeadingOffset; + mPitch=signal.mPitch; + mRoll=signal.mRoll; +} + +const Signal &Signal::operator=(const Signal &rhs) +{ + +} + + +double Signal::GetS(void) +{ + return mS; +} + +double Signal::GetT(void) +{ + return mT; +} + +std::string Signal::GetId(void) +{ + return mId; +} + +std::string Signal::GetName(void) +{ + return mName; +} + +bool Signal::IsDynamic(void) +{ + return mDynamic; +} + +std::string Signal::GetOrientation(void) +{ + return mOrientation; +} + +double Signal::GetZOffset(void) +{ + return mZOffset; +} + +std::string Signal::GetCountry(void) +{ + return mCountry; +} + +std::string Signal::GetCountryRevision(void) +{ + return mCountryRevision; +} + +std::string Signal::GetType(void) +{ + return mType; +} + +std::string Signal::GetSubType(void) +{ + return mSubType; +} + +double Signal::GetValue(void) +{ + return mValue; +} + +std::string Signal::GetUnit(void) +{ + return mUnit; +} + +double Signal::GetHeight(void) +{ + return mHeight; +} + +double Signal::GetWidth(void) +{ + return mWidth; +} + +std::string Signal::GetText(void) +{ + return mText; +} + +double Signal::GetHeadingOffset(void) +{ + return mHeadingOffset; +} + +double Signal::GetPitch(void) +{ + return mPitch; +} + +double Signal::GetRoll(void) +{ + return mRoll; +} + + +void Signal::SetS(double s) +{ + mS=s; +} + +void Signal::SetT(double t) +{ + mT=t; +} + +void Signal::SetId(std::string &id) +{ + mId=id; +} + +void Signal::SetName(std::string &name) +{ + mName=name; +} + +void Signal::SetDynamic(bool dynamic) +{ + mDynamic=dynamic; +} + +void Signal::SetOrientation(std::string &orientation) +{ + mOrientation=orientation; +} + +void Signal::SetZOffset(double zOffset) +{ + mZOffset=zOffset; +} + +void Signal::SetCountry(std::string &country) +{ + mCountry=country; +} + +void Signal::SetCountryRevision(std::string &countryRevision) +{ + mCountryRevision=countryRevision; +} + +void Signal::SetType(std::string &type) +{ + mType=type; +} + +void Signal::SetSubType(std::string &subType) +{ + mSubType=subType; +} + +void Signal::SetValue(double value) +{ + mValue=value; +} + +void Signal::SetUnit(std::string &unit) +{ + mUnit=unit; +} + +void Signal::SetHeight(double height) +{ + mHeight=height; +} + +void Signal::SetWidth(double width) +{ + mWidth=width; +} + +void Signal::SetText(std::string &text) +{ + mText=text; +} + +void Signal::SetHeadingOffset(double headingOffset) +{ + mHeadingOffset=headingOffset; +} + +void Signal::SetPitch(double pitch) +{ + mPitch=pitch; +} + +void Signal::SetRoll(double roll) +{ + mRoll=roll; +} + diff --git a/OpenRoadEd/OpenDrive/ObjectSignal.h b/OpenRoadEd/OpenDrive/ObjectSignal.h index 6a6571bc11e8eea80cd9136c9b55e86b5b7ac0b3..32d418b129bf5a7c2a0b50b8306428143c430128 100644 --- a/OpenRoadEd/OpenDrive/ObjectSignal.h +++ b/OpenRoadEd/OpenDrive/ObjectSignal.h @@ -1,7 +1,7 @@ #ifndef OBJECTSIGNAL_H #define OBJECTSIGNAL_H - +#include <string> //*********************************************************************************** //Object @@ -19,10 +19,74 @@ public: //*********************************************************************************** class Signal { -public: - Signal(){} + private: + double mS; + double mT; + std::string mId; + std::string mName; + bool mDynamic; + std::string mOrientation; + double mZOffset; + std::string mCountry; + std::string mCountryRevision; + std::string mType; + std::string mSubType; + double mValue; + std::string mUnit; + double mHeight; + double mWidth; + std::string mText; + double mHeadingOffset; + double mPitch; + double mRoll; + public: + Signal(); + Signal(std::string &name,std::string &id); + Signal(const Signal &signal); + const Signal &operator=(const Signal &rhs); + + double GetS(void); + double GetT(void); + std::string GetId(void); + std::string GetName(void); + bool IsDynamic(void); + std::string GetOrientation(void); + double GetZOffset(void); + std::string GetCountry(void); + std::string GetCountryRevision(void); + std::string GetType(void); + std::string GetSubType(void); + double GetValue(void); + std::string GetUnit(void); + double GetHeight(void); + double GetWidth(void); + std::string GetText(void); + double GetHeadingOffset(void); + double GetPitch(void); + double GetRoll(void); + + void SetS(double s); + void SetT(double t); + void SetId(std::string &id); + void SetName(std::string &name); + void SetDynamic(bool dynamic); + void SetOrientation(std::string &orientation); + void SetZOffset(double zOffset); + void SetCountry(std::string &country); + void SetCountryRevision(std::string &countryRevision); + void SetType(std::string &type); + void SetSubType(std::string &subType); + void SetValue(double value); + void SetUnit(std::string &unit); + void SetHeight(double height); + void SetWidth(double width); + void SetText(std::string &text); + void SetHeadingOffset(double headingOffset); + void SetPitch(double pitch); + void SetRoll(double roll); + }; //---------------------------------------------------------------------------------- -#endif \ No newline at end of file +#endif diff --git a/OpenRoadEd/OpenDrive/OpenDriveXmlParser.cpp b/OpenRoadEd/OpenDrive/OpenDriveXmlParser.cpp index cd0dc29182c65440e14eda16ae014e4198d43a2a..1a97bcc1a84de69375b45f96b7dca1aa74d857e1 100644 --- a/OpenRoadEd/OpenDrive/OpenDriveXmlParser.cpp +++ b/OpenRoadEd/OpenDrive/OpenDriveXmlParser.cpp @@ -864,6 +864,69 @@ bool OpenDriveXmlParser::ReadObjects (Road* road, TiXmlElement *node) bool OpenDriveXmlParser::ReadSignals (Road* road, TiXmlElement *node) { + double s,t,zOffset,value,height,width,hOffset,pitch,roll; + std::string id,name,dynamic,orientation,country,countryRevision,type,subType,unit,text; + Signal *signal; + int checker=TIXML_SUCCESS; + TiXmlElement *signal_node; + + signal_node=node->FirstChildElement("signal"); + while(signal_node!=0) + { + checker=TIXML_SUCCESS; + checker+=signal_node->QueryDoubleAttribute("s",&s); + checker+=signal_node->QueryDoubleAttribute("t",&t); + checker+=signal_node->QueryStringAttribute("id",&id); + checker+=signal_node->QueryStringAttribute("name",&name); + checker+=signal_node->QueryStringAttribute("dynamic",&dynamic); + checker+=signal_node->QueryStringAttribute("orientation",&orientation); + checker+=signal_node->QueryDoubleAttribute("zOffset",&zOffset); + checker+=signal_node->QueryStringAttribute("country",&country); +// checker+=signal_node->QueryStringAttribute("countryRevision",&countryRevision); + checker+=signal_node->QueryStringAttribute("type",&type); + checker+=signal_node->QueryStringAttribute("subtype",&subType); + checker+=signal_node->QueryDoubleAttribute("value",&value); +// checker+=signal_node->QueryStringAttribute("unit",&unit); +// checker+=signal_node->QueryDoubleAttribute("height",&height); +// checker+=signal_node->QueryDoubleAttribute("width",&width); +// checker+=signal_node->QueryStringAttribute("text",&text); +// checker+=signal_node->QueryDoubleAttribute("hOffset",&hOffset); +// checker+=signal_node->QueryDoubleAttribute("pitch",&pitch); +// checker+=signal_node->QueryDoubleAttribute("roll",&roll); + if (checker!=TIXML_SUCCESS) + { + cout<<"Error parsing road signal attributes"<<endl; + return false; + } + + std::cout << "read signal " << name << " with id: " << id << std::endl; + road->AddSignal(); + signal=road->GetLastSignal(); + signal->SetS(s); + signal->SetT(t); + signal->SetId(id); + signal->SetName(name); + if(dynamic=="yes") + signal->SetDynamic(true); + else + signal->SetDynamic(false); + signal->SetOrientation(orientation); + signal->SetZOffset(zOffset); + signal->SetCountry(country); + signal->SetCountryRevision(countryRevision); + signal->SetType(type); + signal->SetSubType(subType); + signal->SetValue(value); + signal->SetUnit(unit); + signal->SetHeight(height); + signal->SetWidth(width); + signal->SetText(text); + signal->SetHeadingOffset(hOffset); + signal->SetPitch(pitch); + signal->SetRoll(roll); + + signal_node=node->NextSiblingElement("signal"); + } return true; } //--------------