1 #ifndef ANDROID_DVR_RANGE_H_ 2 #define ANDROID_DVR_RANGE_H_ 3 4 #include <private/dvr/eigen.h> 5 6 namespace android { 7 namespace dvr { 8 9 // TODO(skiazyk): Replace all instances of this with Eigen::AlignedBox 10 11 // Container of two points that define a 2D range. 12 template <class T, int d> 13 struct Range { 14 // Construct an uninitialized Range. RangeRange15 Range() {} RangeRange16 Range(Eigen::Vector<T, d> p1, Eigen::Vector<T, d> p2) : p1(p1), p2(p2) {} 17 FromSizeRange18 static Range<T, d> FromSize(Eigen::Vector<T, d> p1, 19 Eigen::Vector<T, d> size) { 20 return Range<T, d>(p1, p1 + size); 21 } 22 23 bool operator==(const Range<T, d>& rhs) const { 24 return p1 == rhs.p1 && p2 == rhs.p2; 25 } 26 GetMinPointRange27 Eigen::Vector<T, d> GetMinPoint() const { return p1; } 28 GetMaxPointRange29 Eigen::Vector<T, d> GetMaxPoint() const { return p2; } 30 GetSizeRange31 Eigen::Vector<T, d> GetSize() const { return p2 - p1; } 32 33 Eigen::Vector<T, d> p1; 34 Eigen::Vector<T, d> p2; 35 }; 36 37 typedef Range<int, 2> Range2i; 38 typedef Range<float, 2> Range2f; 39 40 } // namespace dvr 41 } // namespace android 42 43 #endif // ANDROID_DVR_RANGE_H_ 44