/** * @RDE_HEADER@ * Interface of AbstractMapObject * $Id$ * $HeadURL$ * $Author$ */ #pragma once // Own #include "situation_map_types.h" #include "situation_map_utils.h" #include // Qt //---------------------------------------------------------------------------- namespace SituationMap { class SITUATIONMAP_EXPORT BoundingBox { public: enum class ExtentType {Undefined, Sim, Pixel}; static QString toString(BoundingBox::ExtentType value); public: explicit BoundingBox(ExtentType extentType = ExtentType::Undefined); explicit BoundingBox(ExtentType extentType, const Point3D ¢er, double width = 0, double height = 0); ///< relative to BasePoint void reset(); ExtentType extentType() const; void setExtentType(ExtentType extentType); bool isValid() const; Point3D center() const; double width() const; ///< interpret values depending on type double height() const; ///< interpret values depending on type Point3D topLeft() const; ///< use quadrant 1 Point3D topRight() const; ///< use quadrant 1 Point3D bottomLeft() const; ///< use quadrant 1 Point3D bottomRight() const; ///< use quadrant 1 Point3D centerRight() const; ///< use quadrant 1 PositionCont positions() const; QString toString() const; protected: ExtentType m_extentType = ExtentType::Undefined; ///< relevant for width and height Point3D m_center; ///< simCoordinates double m_width; ///< simCoordinates or pixel double m_height; ///< simCoordinates or pixel }; //----------------------------------------------------------------------------- // output operator: //----------------------------------------------------------------------------- /** * @brief Output operator * @param stream used to stream into. * @param value to be streamed. * @return appended stream. */ SITUATIONMAP_EXPORT std::ostream &operator<< (std::ostream &stream, const BoundingBox &value); SITUATIONMAP_EXPORT std::ostream &operator<< (std::ostream &stream, const BoundingBox::ExtentType &value); } // namespace SituationMap