00001 00011 #ifndef RAIL_INTERACTIVE_WORLD_SURFACE_H_ 00012 #define RAIL_INTERACTIVE_WORLD_SURFACE_H_ 00013 00014 #include <interactive_world_tools/PlacementSurface.h> 00015 #include <interactive_world_tools/PointOfInterest.h> 00016 #include <string> 00017 #include <vector> 00018 00019 namespace rail 00020 { 00021 namespace interactive_world 00022 { 00023 00030 class Surface 00031 { 00032 public: 00043 Surface(const std::string &name = "", const std::string &frame_id = "", const double width = 0, 00044 const double height = 0); 00045 00053 const std::string &getName() const; 00054 00062 void setName(const std::string &name); 00063 00071 const std::string &getFrameID() const; 00072 00080 void setFrameID(const std::string &frame_id); 00081 00089 double getWidth() const; 00090 00098 void setWidth(const double width); 00099 00107 double getHeight() const; 00108 00116 void setHeight(const double height); 00117 00125 const std::vector<PlacementSurface> &getPlacementSurfaces() const; 00126 00134 size_t getNumPlacementSurfaces() const; 00135 00145 const PlacementSurface &getPlacementSurface(const size_t index) const; 00146 00154 void addPlacementSurface(const PlacementSurface &placement_surface); 00155 00164 void removePlacementSurface(const size_t index); 00165 00173 const std::vector<std::string> &getAliases() const; 00174 00182 size_t getNumAliases() const; 00183 00193 const std::string &getAlias(const size_t index) const; 00194 00202 void addAlias(const std::string &alias); 00203 00212 void removeAlias(const size_t index); 00213 00221 const std::vector<PointOfInterest> &getPointsOfInterest() const; 00222 00230 size_t getNumPointsOfInterest() const; 00231 00241 const PointOfInterest &getPointOfInterest(const size_t index) const; 00242 00250 void addPointOfInterest(const PointOfInterest &point_of_interest); 00251 00260 void removePointOfInterest(const size_t index); 00261 00262 private: 00264 std::string name_, frame_id_; 00266 double width_, height_; 00268 std::vector<std::string> aliases_; 00270 std::vector<PlacementSurface> placement_surfaces_; 00272 std::vector<PointOfInterest> pois_; 00273 }; 00274 00275 } 00276 } 00277 00278 #endif