1e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko#ifndef ANDROID_DVR_LOG_HELPERS_H_ 2e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko#define ANDROID_DVR_LOG_HELPERS_H_ 3e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko 4e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko#include <iomanip> 54fe60582f314e381098f8f3bc2e39c5880e9243aAlex Vakulenko#include <ostream> 6e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko 7e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko#include <private/dvr/eigen.h> 8e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko#include <private/dvr/field_of_view.h> 9e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko 10e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenkonamespace android { 11e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenkonamespace dvr { 12e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko 13e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenkotemplate <typename T> 14e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenkoinline std::ostream& operator<<(std::ostream& out, 15e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko const Eigen::Vector<T, 2>& vec) { 16e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko return out << "vec2(" << vec.x() << ',' << vec.y() << ')'; 17e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko} 18e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko 19e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenkotemplate <typename T> 20e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenkoinline std::ostream& operator<<(std::ostream& out, 21e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko const Eigen::Vector<T, 3>& vec) { 22e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko return out << "vec3(" << vec.x() << ',' << vec.y() << ',' << vec.z() << ')'; 23e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko} 24e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko 25e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenkotemplate <typename T> 26e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenkoinline std::ostream& operator<<(std::ostream& out, 27e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko const Eigen::Vector<T, 4>& vec) { 28e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko return out << "vec4(" << vec.x() << ',' << vec.y() << ',' << vec.z() << ',' 29e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko << vec.w() << ')'; 30e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko} 31e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko 32e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenkotemplate <typename T> 33e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenkoinline std::ostream& operator<<(std::ostream& out, 34e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko const Eigen::AffineMatrix<T, 4>& mat) { 354fe60582f314e381098f8f3bc2e39c5880e9243aAlex Vakulenko out << std::setfill(' ') << std::setprecision(4) << std::fixed 364fe60582f314e381098f8f3bc2e39c5880e9243aAlex Vakulenko << std::showpos; 37e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko out << "\nmat4["; 38e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko out << std::setw(10) << mat(0, 0) << " " << std::setw(10) << mat(0, 1) << " " 39e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko << std::setw(10) << mat(0, 2) << " " << std::setw(10) << mat(0, 3); 40e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko out << "]\n ["; 41e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko out << std::setw(10) << mat(1, 0) << " " << std::setw(10) << mat(1, 1) << " " 42e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko << std::setw(10) << mat(1, 2) << " " << std::setw(10) << mat(1, 3); 43e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko out << "]\n ["; 44e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko out << std::setw(10) << mat(2, 0) << " " << std::setw(10) << mat(2, 1) << " " 45e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko << std::setw(10) << mat(2, 2) << " " << std::setw(10) << mat(2, 3); 46e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko out << "]\n ["; 47e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko out << std::setw(10) << mat(3, 0) << " " << std::setw(10) << mat(3, 1) << " " 48e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko << std::setw(10) << mat(3, 2) << " " << std::setw(10) << mat(3, 3); 49e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko out << "]\n"; 50e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko 51e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko return out; 52e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko} 53e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko 54e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenkoinline std::ostream& operator<<(std::ostream& out, const FieldOfView& fov) { 55e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko return out << "fov(" << (fov.GetLeft() * 180.0f / M_PI) << ',' 56e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko << (fov.GetRight() * 180.0f / M_PI) << ',' 57e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko << (fov.GetBottom() * 180.0f / M_PI) << ',' 58e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko << (fov.GetTop() * 180.0f / M_PI) << ')'; 59e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko} 60e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko 61e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko} // namespace dvr 62e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko} // namespace android 63e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko 64e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko#endif // ANDROID_DVR_LOG_HELPERS_H_ 65