Browse Source

change map_lanetoxodr. add object borders.

yuchuli 2 years ago
parent
commit
2b62086352

+ 132 - 0
src/common/common/xodr/OpenDrive/ObjectSignal.cpp

@@ -2,6 +2,138 @@
 
 #include <iostream>
 
+Object_borders_border::Object_borders_border(double width,std::string borderType,int outlineid)
+{
+    mwidth = width;
+    mborderType = borderType;
+    moutlineid = outlineid;
+}
+
+int Object_borders_border::GetuserCompleteOutline(bool & userCompleteOutline)
+{
+    if(muserCompleteOutline.size()>0)
+    {
+        userCompleteOutline = muserCompleteOutline[0];
+        return 1;
+    }
+    return 0;
+}
+
+void Object_borders_border::SetuserCompleteOutline(bool userCompleteOutline)
+{
+    if(muserCompleteOutline.size()>0)
+    {
+        muserCompleteOutline.clear();
+    }
+    muserCompleteOutline.push_back(userCompleteOutline);
+}
+
+void Object_borders_border::ResetuserCompleteOutline()
+{
+    if(muserCompleteOutline.size()>0)
+    {
+        muserCompleteOutline.clear();
+    }
+}
+
+void Object_borders_border::Setwidth(double width)
+{
+    mwidth = width;
+}
+
+void Object_borders_border::SetborderType(std::string borderType)
+{
+    mborderType = borderType;
+}
+
+void Object_borders_border::Setoutlineid(int outlineid)
+{
+    moutlineid = outlineid;
+}
+
+double Object_borders_border::Getwidth()
+{
+    return mwidth;
+}
+
+std::string Object_borders_border::GetborderType()
+{
+    return mborderType;
+}
+
+int Object_borders_border::Getoutlineid()
+{
+    return moutlineid;
+}
+
+
+Object_borders::Object_borders(Object_borders_border xborder)
+{
+    mvectorborder.push_back(xborder);
+}
+
+Object_borders::Object_borders()
+{
+
+}
+
+vector<Object_borders_border> * Object_borders::GetBorderVector()
+{
+    return &mvectorborder;
+}
+
+Object_borders_border* Object_borders::GetBorder(unsigned int i)
+{
+    if((mvectorborder.size() == 0) ||(i>=mvectorborder.size()))
+    {
+        return NULL;
+    }
+    return &(mvectorborder.at(i));
+}
+
+unsigned int Object_borders::GetBorderCount()
+{
+    return static_cast<unsigned int>(mvectorborder.size());
+}
+
+Object_borders_border*			Object_borders::GetLastBorder()
+{
+    if(mvectorborder.size() == 0)return NULL;
+    return &mvectorborder.at(mvectorborder.size() -1);
+}
+
+unsigned int Object_borders::AddBorder(double width,std::string borderType,int outlineid)
+{
+    mvectorborder.push_back(Object_borders_border(width,borderType,outlineid));
+    return  static_cast<unsigned int >(mvectorborder.size()-1);
+}
+
+unsigned int Object_borders::CloneBorder(unsigned int index)
+{
+    if(index>=mvectorborder.size())
+    {
+        std::cout<<" Object_borders::CloneBorder fail index: "
+                <<index<<" size: "<<mvectorborder.size()<<std::endl;
+        return index;
+    }
+    if(index<(mvectorborder.size()-1))
+        mvectorborder.insert(mvectorborder.begin()+index+1, mvectorborder[index]);
+    else if(index==mvectorborder.size()-1)
+        mvectorborder.push_back(mvectorborder[index]);
+    mnLastAddedBorders=index+1;
+    return mnLastAddedBorders;
+}
+
+void Object_borders::DeleteBorder(unsigned int index)
+{
+    if((mvectorborder.size() == 0) ||(index>=mvectorborder.size()))
+    {
+        return;
+    }
+    mvectorborder.erase(mvectorborder.begin()+index);
+}
+
+
 
 Object_markings_marking_cornerReference::Object_markings_marking_cornerReference(unsigned int id)
 {

+ 44 - 0
src/common/common/xodr/OpenDrive/ObjectSignal.h

@@ -8,6 +8,50 @@ using std::vector;
 using std::string;
 
 
+
+class Object_borders_border
+{
+private:
+    double mwidth;
+    std::string mborderType;
+    int moutlineid;
+    std::vector<bool> muserCompleteOutline;
+
+public:
+    Object_borders_border(double width,std::string borderType,int outlineid);
+
+    int GetuserCompleteOutline(bool & userCompleteOutline);
+    void SetuserCompleteOutline(bool userCompleteOutline);
+    void ResetuserCompleteOutline();
+
+    void Setwidth(double width);
+    void SetborderType(std::string borderType);
+    void Setoutlineid(int outlineid);
+
+    double Getwidth();
+    std::string GetborderType();
+    int Getoutlineid();
+};
+
+class Object_borders
+{
+private:
+    std::vector<Object_borders_border> mvectorborder;
+    unsigned int mnLastAddedBorders;
+public:
+    Object_borders(Object_borders_border xborder);
+    Object_borders();
+
+    vector<Object_borders_border> * GetBorderVector();
+    Object_borders_border* GetBorder(unsigned int i);
+    unsigned int GetBorderCount();
+    Object_borders_border*			GetLastBorder();
+    unsigned int AddBorder(double width,std::string borderType,int outlineid);
+    unsigned int CloneBorder(unsigned int index);
+    void DeleteBorder(unsigned int index);
+
+};
+
 class Object_markings_marking_cornerReference
 {
 private: