1*89c4ff92SAndroid Build Coastguard Worker // 2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2020 Arm Ltd and Contributors. All rights reserved. 3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT 4*89c4ff92SAndroid Build Coastguard Worker // 5*89c4ff92SAndroid Build Coastguard Worker 6*89c4ff92SAndroid Build Coastguard Worker #pragma once 7*89c4ff92SAndroid Build Coastguard Worker 8*89c4ff92SAndroid Build Coastguard Worker namespace od 9*89c4ff92SAndroid Build Coastguard Worker { 10*89c4ff92SAndroid Build Coastguard Worker /** 11*89c4ff92SAndroid Build Coastguard Worker * @brief Class used to store and receive bounding box location and size information 12*89c4ff92SAndroid Build Coastguard Worker * 13*89c4ff92SAndroid Build Coastguard Worker */ 14*89c4ff92SAndroid Build Coastguard Worker class BoundingBox 15*89c4ff92SAndroid Build Coastguard Worker { 16*89c4ff92SAndroid Build Coastguard Worker public: 17*89c4ff92SAndroid Build Coastguard Worker /** 18*89c4ff92SAndroid Build Coastguard Worker * @brief Default constructor 19*89c4ff92SAndroid Build Coastguard Worker */ 20*89c4ff92SAndroid Build Coastguard Worker BoundingBox(); 21*89c4ff92SAndroid Build Coastguard Worker 22*89c4ff92SAndroid Build Coastguard Worker /** 23*89c4ff92SAndroid Build Coastguard Worker * @brief Constructor with parameters to configure the bounding box dimensions 24*89c4ff92SAndroid Build Coastguard Worker * @param[in] x int value representing the x coordinate. 25*89c4ff92SAndroid Build Coastguard Worker * @param[in] y int value representing the y coordinate. 26*89c4ff92SAndroid Build Coastguard Worker * @param[in] width unsigned int value representing the width value. 27*89c4ff92SAndroid Build Coastguard Worker * @param[in] height unsigned int value representing the height value. 28*89c4ff92SAndroid Build Coastguard Worker */ 29*89c4ff92SAndroid Build Coastguard Worker BoundingBox(int x, int y, unsigned int width, unsigned int height); 30*89c4ff92SAndroid Build Coastguard Worker 31*89c4ff92SAndroid Build Coastguard Worker /** 32*89c4ff92SAndroid Build Coastguard Worker * @brief Constructor with a BoundingBox type parameter to copy from. 33*89c4ff92SAndroid Build Coastguard Worker * @param[in] other Bounding box to copy. 34*89c4ff92SAndroid Build Coastguard Worker */ 35*89c4ff92SAndroid Build Coastguard Worker BoundingBox(const BoundingBox& other); 36*89c4ff92SAndroid Build Coastguard Worker 37*89c4ff92SAndroid Build Coastguard Worker ~BoundingBox() = default; 38*89c4ff92SAndroid Build Coastguard Worker 39*89c4ff92SAndroid Build Coastguard Worker /** 40*89c4ff92SAndroid Build Coastguard Worker * @brief Function to retrieve the X coordinate. 41*89c4ff92SAndroid Build Coastguard Worker */ 42*89c4ff92SAndroid Build Coastguard Worker int GetX() const; 43*89c4ff92SAndroid Build Coastguard Worker 44*89c4ff92SAndroid Build Coastguard Worker /** 45*89c4ff92SAndroid Build Coastguard Worker * @brief Function to retrieve the Y coordinate. 46*89c4ff92SAndroid Build Coastguard Worker */ 47*89c4ff92SAndroid Build Coastguard Worker int GetY() const; 48*89c4ff92SAndroid Build Coastguard Worker 49*89c4ff92SAndroid Build Coastguard Worker /** 50*89c4ff92SAndroid Build Coastguard Worker * @brief Function to retrieve the width. 51*89c4ff92SAndroid Build Coastguard Worker */ 52*89c4ff92SAndroid Build Coastguard Worker unsigned int GetWidth() const; 53*89c4ff92SAndroid Build Coastguard Worker 54*89c4ff92SAndroid Build Coastguard Worker /** 55*89c4ff92SAndroid Build Coastguard Worker * @brief Function to retrieve the height. 56*89c4ff92SAndroid Build Coastguard Worker */ 57*89c4ff92SAndroid Build Coastguard Worker unsigned int GetHeight() const; 58*89c4ff92SAndroid Build Coastguard Worker 59*89c4ff92SAndroid Build Coastguard Worker /** 60*89c4ff92SAndroid Build Coastguard Worker * @brief Function to set the X coordinate. 61*89c4ff92SAndroid Build Coastguard Worker * @param[in] x int value representing x coordinate 62*89c4ff92SAndroid Build Coastguard Worker */ 63*89c4ff92SAndroid Build Coastguard Worker void SetX(int x); 64*89c4ff92SAndroid Build Coastguard Worker 65*89c4ff92SAndroid Build Coastguard Worker /** 66*89c4ff92SAndroid Build Coastguard Worker * @brief Function to set the Y coordinate. 67*89c4ff92SAndroid Build Coastguard Worker * @param[in] y int value representing y coordinate 68*89c4ff92SAndroid Build Coastguard Worker */ 69*89c4ff92SAndroid Build Coastguard Worker void SetY(int y); 70*89c4ff92SAndroid Build Coastguard Worker 71*89c4ff92SAndroid Build Coastguard Worker /** 72*89c4ff92SAndroid Build Coastguard Worker * @brief Function to set the width of the BoundingBox. 73*89c4ff92SAndroid Build Coastguard Worker * @param[in] width int value representing the width 74*89c4ff92SAndroid Build Coastguard Worker */ 75*89c4ff92SAndroid Build Coastguard Worker void SetWidth(unsigned int width); 76*89c4ff92SAndroid Build Coastguard Worker 77*89c4ff92SAndroid Build Coastguard Worker /** 78*89c4ff92SAndroid Build Coastguard Worker * @brief Function to set the height of the BoundingBox. 79*89c4ff92SAndroid Build Coastguard Worker * @param[in] height int value representing the height 80*89c4ff92SAndroid Build Coastguard Worker */ 81*89c4ff92SAndroid Build Coastguard Worker void SetHeight(unsigned int height); 82*89c4ff92SAndroid Build Coastguard Worker 83*89c4ff92SAndroid Build Coastguard Worker /** 84*89c4ff92SAndroid Build Coastguard Worker * @brief Function to check equality with another BoundingBox 85*89c4ff92SAndroid Build Coastguard Worker * @param[in] other BoundingBox to compare with 86*89c4ff92SAndroid Build Coastguard Worker */ 87*89c4ff92SAndroid Build Coastguard Worker BoundingBox& operator=(const BoundingBox& other); 88*89c4ff92SAndroid Build Coastguard Worker 89*89c4ff92SAndroid Build Coastguard Worker private: 90*89c4ff92SAndroid Build Coastguard Worker int m_X; 91*89c4ff92SAndroid Build Coastguard Worker int m_Y; 92*89c4ff92SAndroid Build Coastguard Worker unsigned int m_Width; 93*89c4ff92SAndroid Build Coastguard Worker unsigned int m_Height; 94*89c4ff92SAndroid Build Coastguard Worker }; 95*89c4ff92SAndroid Build Coastguard Worker 96*89c4ff92SAndroid Build Coastguard Worker /* 97*89c4ff92SAndroid Build Coastguard Worker * @brief: Get a bounding box within the limits of another bounding box 98*89c4ff92SAndroid Build Coastguard Worker * 99*89c4ff92SAndroid Build Coastguard Worker * @param[in] boxIn Input bounding box 100*89c4ff92SAndroid Build Coastguard Worker * @param[out] boxOut Output bounding box 101*89c4ff92SAndroid Build Coastguard Worker * @param[in] boxLimits Bounding box defining the limits which the output 102*89c4ff92SAndroid Build Coastguard Worker * needs to conform to. 103*89c4ff92SAndroid Build Coastguard Worker * @return none 104*89c4ff92SAndroid Build Coastguard Worker */ 105*89c4ff92SAndroid Build Coastguard Worker void GetValidBoundingBox(const BoundingBox& boxIn, BoundingBox& boxOut, 106*89c4ff92SAndroid Build Coastguard Worker const BoundingBox& boxLimits); 107*89c4ff92SAndroid Build Coastguard Worker 108*89c4ff92SAndroid Build Coastguard Worker }// namespace od