1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: util_Rect.h 4 5 Copyright (C)2009-2012 Nintendo Co., Ltd. All rights reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 $Rev: 46347 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_UTIL_UTIL_RECT_H_ 17 #define NN_UTIL_UTIL_RECT_H_ 18 19 #ifdef __cplusplus 20 21 namespace nn { namespace util { 22 23 //-------------------------------------------------------------------------- 24 // 25 //--------------------------------------------------------------------------- 26 struct Rect 27 { 28 public: 29 /* ------------------------------------------------------------------------ 30 Variables 31 ------------------------------------------------------------------------ */ 32 f32 left; // 33 f32 top; // 34 f32 right; // 35 f32 bottom; // 36 37 /* ------------------------------------------------------------------------ 38 Functions 39 ------------------------------------------------------------------------ */ 40 //---------------------------------------- 41 // 42 // 43 44 //-------------------------------------------------------------------------- 45 // 46 //--------------------------------------------------------------------------- RectRect47 Rect() 48 : left(0), 49 top(0), 50 right(0), 51 bottom(0) 52 { 53 } 54 55 //-------------------------------------------------------------------------- 56 // 57 // 58 // 59 // 60 // 61 // 62 //--------------------------------------------------------------------------- RectRect63 Rect(f32 l, f32 t, f32 r, f32 b) 64 : left(l), 65 top(t), 66 right(r), 67 bottom(b) 68 { 69 } 70 71 //-------------------------------------------------------------------------- 72 // 73 //--------------------------------------------------------------------------- RectRect74 Rect(const Rect& v) 75 : left(v.left), 76 top(v.top), 77 right(v.right), 78 bottom(v.bottom) 79 { 80 } 81 82 //-------------------------------------------------------------------------- 83 // 84 //--------------------------------------------------------------------------- ~RectRect85 ~Rect() {} 86 87 // 88 89 //---------------------------------------- 90 // 91 // 92 93 //-------------------------------------------------------------------------- 94 // 95 // 96 // 97 //--------------------------------------------------------------------------- GetWidthRect98 f32 GetWidth() const { return right - left; } 99 100 //-------------------------------------------------------------------------- 101 // 102 // 103 // 104 //--------------------------------------------------------------------------- GetHeightRect105 f32 GetHeight() const { return bottom - top; } 106 107 //-------------------------------------------------------------------------- 108 // 109 // 110 // 111 //--------------------------------------------------------------------------- GetXRect112 f32 GetX() const { return left; } 113 114 //-------------------------------------------------------------------------- 115 // 116 // 117 // 118 //--------------------------------------------------------------------------- GetYRect119 f32 GetY() const { return top; } 120 121 //-------------------------------------------------------------------------- 122 // 123 // 124 // 125 //--------------------------------------------------------------------------- SetWidthRect126 void SetWidth(f32 width) { right = left + width; } 127 128 //-------------------------------------------------------------------------- 129 // 130 // 131 // 132 //--------------------------------------------------------------------------- SetHeightRect133 void SetHeight(f32 height) { bottom = top + height; } 134 135 //-------------------------------------------------------------------------- 136 // 137 // 138 // 139 // 140 //--------------------------------------------------------------------------- MoveToRect141 void MoveTo(f32 x, f32 y) 142 { 143 right = x + GetWidth(); 144 left = x; 145 bottom = y + GetHeight(); 146 top = y; 147 } 148 149 //-------------------------------------------------------------------------- 150 // 151 // 152 // 153 // 154 //--------------------------------------------------------------------------- MoveRect155 void Move(f32 dx, f32 dy) 156 { 157 left += dx; 158 right += dx; 159 top += dy; 160 bottom += dy; 161 } 162 163 //-------------------------------------------------------------------------- 164 // 165 // 166 // 167 // 168 // 169 // 170 //--------------------------------------------------------------------------- SetOriginAndSizeRect171 void SetOriginAndSize(f32 x, f32 y, f32 width, f32 height ) 172 { 173 left = x; 174 right = x + width; 175 top = y; 176 bottom = y + height; 177 } 178 179 // 180 181 //-------------------------------------------------------------------------- 182 // 183 //--------------------------------------------------------------------------- NormalizeRect184 void Normalize() 185 { 186 const f32 l = left; 187 const f32 t = top; 188 const f32 r = right; 189 const f32 b = bottom; 190 191 left = (r - l) >= 0 ? l : r; 192 right = (r - l) >= 0 ? r : l; 193 top = (b - t) >= 0 ? t : b; 194 bottom = (b - t) >= 0 ? b : t; 195 } 196 }; 197 198 }} /* namespace nn::util */ 199 200 #endif // __cplusplus 201 202 #endif // NN_UTIL_UTIL_RECT_H_ 203