GLM Version 0.9.0

xstream.hpp

00001 #ifndef GLM_EXT_VIRTREV_XSTREAM_HPP
00002 #define GLM_EXT_VIRTREV_XSTREAM_HPP
00003 
00005 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
00006 // Virtrev SDK copyright matrem (matrem84.free.fr)
00008 // Created : 2008-05-24
00009 // Updated : 2008-05-26
00010 // Licence : This source is under MIT License
00011 // File    : glm/ext/virtrev/xstream.h
00013 // Dependency:
00014 // - GLM core
00015 // - GLM_GTX_matrix_selection
00017 
00018 #include "../glm.hpp"
00019 #include "../gtx/matrix_selection.hpp"
00020 #include <iostream>
00021 
00022 namespace glm
00023 {
00024         namespace virtrev_glmext
00025         {
00027                 namespace xstream
00028                 {
00029                         template<typename T>
00030                         std::ostream & operator << (std::ostream & stream, glm::detail::tvec2<T> const & vec)
00031                         {
00032                                 stream << "<glm_vec2 ";
00033                                 stream << "x=\"" << vec.x << "\" ";
00034                                 stream << "y=\"" << vec.y << "\" ";
00035                                 stream << "/>";
00036 
00037                                 return stream;
00038                         }
00039 
00040                         template<typename T>
00041                         std::ostream & operator << (std::ostream & stream, glm::detail::tvec3<T> const & vec)
00042                         {
00043                                 stream << "<glm_vec3 ";
00044                                 stream << "x=\"" << vec.x << "\" ";
00045                                 stream << "y=\"" << vec.y << "\" ";
00046                                 stream << "z=\"" << vec.z << "\" ";
00047                                 stream << "/>";
00048 
00049                                 return stream;
00050                         }
00051 
00052                         template<typename T>
00053                         std::ostream & operator << (std::ostream & stream, glm::detail::tvec4<T> const & vec)
00054                         {
00055                                 stream << "<glm_vec4 ";
00056                                 stream << "x=\"" << vec.x << "\" ";
00057                                 stream << "y=\"" << vec.y << "\" ";
00058                                 stream << "z=\"" << vec.z << "\" ";
00059                                 stream << "w=\"" << vec.w << "\" ";
00060                                 stream << "/>";
00061 
00062                                 return stream;
00063                         }
00064 
00065                         template<typename T>
00066                         std::ostream & operator << (std::ostream & stream, glm::detail::tmat2x2<T> const & mat)
00067                         {
00068                                 stream << "<glm_mat2>" << std::endl;
00069                                 stream << "<row ";
00070                                 stream << "x=\"" << glm::row(mat, 0)[0] << "\" ";
00071                                 stream << "y=\"" << glm::row(mat, 0)[1] << "\" ";
00072                                 stream << "/>" << std::endl;
00073                                 stream << "<row ";
00074                                 stream << "x=\"" << glm::row(mat, 1)[0] << "\" ";
00075                                 stream << "y=\"" << glm::row(mat, 1)[1] << "\" ";
00076                                 stream << "/>" << std::endl;
00077                                 stream << "</glm_mat2>";
00078 
00079                                 return stream;
00080                         }
00081 
00082                         template<typename T>
00083                         std::ostream & operator << (std::ostream & stream, glm::detail::tmat3x3<T> const & mat)
00084                         {
00085                                 stream << "<glm_mat3>" << std::endl;
00086                                 stream << "<row ";
00087                                 stream << "x=\"" << glm::row(mat, 0)[0] << "\" ";
00088                                 stream << "y=\"" << glm::row(mat, 0)[1] << "\" ";
00089                                 stream << "z=\"" << glm::row(mat, 0)[2] << "\" ";
00090                                 stream << "/>" << std::endl;
00091                                 stream << "<row ";
00092                                 stream << "x=\"" << glm::row(mat, 1)[0] << "\" ";
00093                                 stream << "y=\"" << glm::row(mat, 1)[1] << "\" ";
00094                                 stream << "z=\"" << glm::row(mat, 1)[2] << "\" ";
00095                                 stream << "/>" << std::endl;
00096                                 stream << "<row ";
00097                                 stream << "x=\"" << glm::row(mat, 2)[0] << "\" ";
00098                                 stream << "y=\"" << glm::row(mat, 2)[1] << "\" ";
00099                                 stream << "z=\"" << glm::row(mat, 2)[2] << "\" ";
00100                                 stream << "/>" << std::endl;
00101                                 stream << "</glm_mat3>";
00102 
00103                                 return stream;
00104                         }
00105 
00106                         template<typename T>
00107                         std::ostream & operator << (std::ostream & stream, glm::detail::tmat4x4<T> const & mat)
00108                         {
00109                                 stream << "<glm_mat4>" << std::endl;
00110                                 stream << "<row ";
00111                                 stream << "x=\"" << glm::row(mat, 0)[0] << "\" ";
00112                                 stream << "y=\"" << glm::row(mat, 0)[1] << "\" ";
00113                                 stream << "z=\"" << glm::row(mat, 0)[2] << "\" ";
00114                                 stream << "w=\"" << glm::row(mat, 0)[3] << "\" ";
00115                                 stream << "/>" << std::endl;
00116                                 stream << "<row ";
00117                                 stream << "x=\"" << glm::row(mat, 1)[0] << "\" ";
00118                                 stream << "y=\"" << glm::row(mat, 1)[1] << "\" ";
00119                                 stream << "z=\"" << glm::row(mat, 1)[2] << "\" ";
00120                                 stream << "w=\"" << glm::row(mat, 1)[3] << "\" ";
00121                                 stream << "/>" << std::endl;
00122                                 stream << "<row ";
00123                                 stream << "x=\"" << glm::row(mat, 2)[0] << "\" ";
00124                                 stream << "y=\"" << glm::row(mat, 2)[1] << "\" ";
00125                                 stream << "z=\"" << glm::row(mat, 2)[2] << "\" ";
00126                                 stream << "w=\"" << glm::row(mat, 2)[3] << "\" ";
00127                                 stream << "/>" << std::endl;
00128                                 stream << "<row ";
00129                                 stream << "x=\"" << glm::row(mat, 3)[0] << "\" ";
00130                                 stream << "y=\"" << glm::row(mat, 3)[1] << "\" ";
00131                                 stream << "z=\"" << glm::row(mat, 3)[2] << "\" ";
00132                                 stream << "w=\"" << glm::row(mat, 3)[3] << "\" ";
00133                                 stream << "/>" << std::endl;
00134                                 stream << "</glm_mat3>";
00135                         
00136                                 return stream;
00137                         }
00138                 }
00139         }
00140 }
00141 
00142 namespace glm{using namespace glm::virtrev_glmext::xstream;}
00143 
00144 #endif//GLM_EXT_VIRTREV_XSTREAM_HPP