// // Copyright © 2020 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once namespace od { /** * @brief Class used to store and receive bounding box location and size information * */ class BoundingBox { public: /** * @brief Default constructor */ BoundingBox(); /** * @brief Constructor with parameters to configure the bounding box dimensions * @param[in] x int value representing the x coordinate. * @param[in] y int value representing the y coordinate. * @param[in] width unsigned int value representing the width value. * @param[in] height unsigned int value representing the height value. */ BoundingBox(int x, int y, unsigned int width, unsigned int height); /** * @brief Constructor with a BoundingBox type parameter to copy from. * @param[in] other Bounding box to copy. */ BoundingBox(const BoundingBox& other); ~BoundingBox() = default; /** * @brief Function to retrieve the X coordinate. */ int GetX() const; /** * @brief Function to retrieve the Y coordinate. */ int GetY() const; /** * @brief Function to retrieve the width. */ unsigned int GetWidth() const; /** * @brief Function to retrieve the height. */ unsigned int GetHeight() const; /** * @brief Function to set the X coordinate. * @param[in] x int value representing x coordinate */ void SetX(int x); /** * @brief Function to set the Y coordinate. * @param[in] y int value representing y coordinate */ void SetY(int y); /** * @brief Function to set the width of the BoundingBox. * @param[in] width int value representing the width */ void SetWidth(unsigned int width); /** * @brief Function to set the height of the BoundingBox. * @param[in] height int value representing the height */ void SetHeight(unsigned int height); /** * @brief Function to check equality with another BoundingBox * @param[in] other BoundingBox to compare with */ BoundingBox& operator=(const BoundingBox& other); private: int m_X; int m_Y; unsigned int m_Width; unsigned int m_Height; }; /* * @brief: Get a bounding box within the limits of another bounding box * * @param[in] boxIn Input bounding box * @param[out] boxOut Output bounding box * @param[in] boxLimits Bounding box defining the limits which the output * needs to conform to. * @return none */ void GetValidBoundingBox(const BoundingBox& boxIn, BoundingBox& boxOut, const BoundingBox& boxLimits); }// namespace od