log_helpers.h revision e4eec20f6263f4a42ae462456f60ea6c4518bb0a
1e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko#ifndef ANDROID_DVR_LOG_HELPERS_H_
2e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko#define ANDROID_DVR_LOG_HELPERS_H_
3e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko
4e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko#include <iomanip>
5e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko
6e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko#include <base/logging.h>
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) {
35e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko  out << std::setfill(' ') << std::setprecision(4) << std::fixed << std::showpos;
36e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko  out << "\nmat4[";
37e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko  out << std::setw(10) << mat(0, 0) << " " << std::setw(10) << mat(0, 1) << " "
38e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko      << std::setw(10) << mat(0, 2) << " " << std::setw(10) << mat(0, 3);
39e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko  out << "]\n    [";
40e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko  out << std::setw(10) << mat(1, 0) << " " << std::setw(10) << mat(1, 1) << " "
41e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko      << std::setw(10) << mat(1, 2) << " " << std::setw(10) << mat(1, 3);
42e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko  out << "]\n    [";
43e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko  out << std::setw(10) << mat(2, 0) << " " << std::setw(10) << mat(2, 1) << " "
44e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko      << std::setw(10) << mat(2, 2) << " " << std::setw(10) << mat(2, 3);
45e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko  out << "]\n    [";
46e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko  out << std::setw(10) << mat(3, 0) << " " << std::setw(10) << mat(3, 1) << " "
47e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko      << std::setw(10) << mat(3, 2) << " " << std::setw(10) << mat(3, 3);
48e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko  out << "]\n";
49e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko
50e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko  return out;
51e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko}
52e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko
53e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenkoinline std::ostream& operator<<(std::ostream& out, const FieldOfView& fov) {
54e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko  return out << "fov(" << (fov.GetLeft() * 180.0f / M_PI) << ','
55e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko             << (fov.GetRight() * 180.0f / M_PI) << ','
56e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko             << (fov.GetBottom() * 180.0f / M_PI) << ','
57e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko             << (fov.GetTop() * 180.0f / M_PI) << ')';
58e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko}
59e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko
60e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko}  // namespace dvr
61e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko}  // namespace android
62e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko
63e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko#endif  // ANDROID_DVR_LOG_HELPERS_H_
64