fixed: glm::operator<< (using a copy of #491)

This commit is contained in:
jan p springer 2016-03-14 13:13:21 +00:00
parent ca7a4ed4fe
commit b52156991e

View File

@ -30,9 +30,11 @@
/// @author Jan P Springer (regnirpsj@gmail.com) /// @author Jan P Springer (regnirpsj@gmail.com)
/////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////
#include <iomanip> // std::fixed, std::setfill<>, std::setprecision, std::right, std::setw #include <iomanip> // std::fixed, std::setfill<>, std::setprecision, std::right,
// std::setw
#include <ostream> // std::basic_ostream<> #include <ostream> // std::basic_ostream<>
#include "../gtc/matrix_access.hpp" // glm::col, glm::row #include "../gtc/matrix_access.hpp" // glm::col, glm::row
#include "../gtx/type_trait.hpp" // glm::type<>
#if !defined(GLM_META_PROG_HELPERS) #if !defined(GLM_META_PROG_HELPERS)
# pragma error("Please define 'GLM_META_PROG_HELPERS' before using GLM_GTX_io") # pragma error("Please define 'GLM_META_PROG_HELPERS' before using GLM_GTX_io")
@ -201,6 +203,8 @@ namespace glm{
{ {
io::format_punct<CTy> const & fmt(io::get_facet<io::format_punct<CTy> >(os)); io::format_punct<CTy> const & fmt(io::get_facet<io::format_punct<CTy> >(os));
length_t const& components(type<V>::components);
if(fmt.formatted) if(fmt.formatted)
{ {
io::basic_state_saver<CTy> const bss(os); io::basic_state_saver<CTy> const bss(os);
@ -211,20 +215,20 @@ namespace glm{
<< std::setfill(fmt.space) << std::setfill(fmt.space)
<< fmt.delim_left; << fmt.delim_left;
for (unsigned i(0); i < V<T,P>::components; ++i) { for (unsigned i(0); i < components; ++i) {
os << std::setw(fmt.width) << a[i]; os << std::setw(fmt.width) << a[i];
if (V<T,P>::components-1 != i) { os << fmt.separator; } if (components-1 != i) { os << fmt.separator; }
} }
os << fmt.delim_right; os << fmt.delim_right;
} }
else else
{ {
for (unsigned i(0); i < V<T,P>::components; ++i) { for (unsigned i(0); i < components; ++i) {
os << a[i]; os << a[i];
if (V<T,P>::components-1 != i) { os << fmt.space; } if (components-1 != i) { os << fmt.space; }
} }
} }
} }
@ -276,6 +280,9 @@ namespace glm{
{ {
io::format_punct<CTy> const & fmt(io::get_facet<io::format_punct<CTy> >(os)); io::format_punct<CTy> const & fmt(io::get_facet<io::format_punct<CTy> >(os));
length_t const& cols(type<M>::cols);
length_t const& rows(type<M>::rows);
if(fmt.formatted) { if(fmt.formatted) {
os << fmt.newline os << fmt.newline
<< fmt.delim_left; << fmt.delim_left;
@ -283,24 +290,24 @@ namespace glm{
switch (fmt.order) { switch (fmt.order) {
case io::column_major: case io::column_major:
{ {
for (unsigned i(0); i < M<T,P>::rows; ++i) { for (unsigned i(0); i < rows; ++i) {
if (0 != i) { os << fmt.space; } if (0 != i) { os << fmt.space; }
os << row(a, i); os << row(a, i);
if (M<T,P>::rows-1 != i) { os << fmt.newline; } if (rows-1 != i) { os << fmt.newline; }
} }
} }
break; break;
case io::row_major: case io::row_major:
{ {
for (unsigned i(0); i < M<T,P>::cols; ++i) { for (unsigned i(0); i < cols; ++i) {
if (0 != i) { os << fmt.space; } if (0 != i) { os << fmt.space; }
os << column(a, i); os << column(a, i);
if (M<T,P>::cols-1 != i) { os << fmt.newline; } if (cols-1 != i) { os << fmt.newline; }
} }
} }
break; break;
@ -311,20 +318,20 @@ namespace glm{
switch (fmt.order) { switch (fmt.order) {
case io::column_major: case io::column_major:
{ {
for (unsigned i(0); i < M<T,P>::cols; ++i) { for (unsigned i(0); i < cols; ++i) {
os << column(a, i); os << column(a, i);
if (M<T,P>::cols-1 != i) { os << fmt.space; } if (cols-1 != i) { os << fmt.space; }
} }
} }
break; break;
case io::row_major: case io::row_major:
{ {
for (unsigned i(0); i < M<T,P>::rows; ++i) { for (unsigned i(0); i < rows; ++i) {
os << row(a, i); os << row(a, i);
if (M<T,P>::rows-1 != i) { os << fmt.space; } if (rows-1 != i) { os << fmt.space; }
} }
} }
break; break;
@ -401,9 +408,11 @@ namespace glm{
if(cerberus) if(cerberus)
{ {
io::format_punct<CTy> const & fmt(io::get_facet<io::format_punct<CTy> >(os)); io::format_punct<CTy> const& fmt(io::get_facet<io::format_punct<CTy> >(os));
M<T,P> const& ml(a.first); M<T,P> const& ml(a.first);
M<T,P> const& mr(a.second); M<T,P> const& mr(a.second);
length_t const& cols(type<M>::cols);
length_t const& rows(type<M>::rows);
if(fmt.formatted) { if(fmt.formatted) {
os << fmt.newline os << fmt.newline
@ -412,32 +421,32 @@ namespace glm{
switch (fmt.order) { switch (fmt.order) {
case io::column_major: case io::column_major:
{ {
for (unsigned i(0); i < M<T,P>::rows; ++i) { for (unsigned i(0); i < rows; ++i) {
if (0 != i) { os << fmt.space; } if (0 != i) { os << fmt.space; }
os << row(ml, i) os << row(ml, i)
<< ((M<T,P>::rows-1 != i) ? fmt.space : fmt.delim_right) << ((rows-1 != i) ? fmt.space : fmt.delim_right)
<< fmt.space << fmt.space
<< ((0 != i) ? fmt.space : fmt.delim_left) << ((0 != i) ? fmt.space : fmt.delim_left)
<< row(mr, i); << row(mr, i);
if (M<T,P>::rows-1 != i) { os << fmt.newline; } if (rows-1 != i) { os << fmt.newline; }
} }
} }
break; break;
case io::row_major: case io::row_major:
{ {
for (unsigned i(0); i < M<T,P>::cols; ++i) { for (unsigned i(0); i < cols; ++i) {
if (0 != i) { os << fmt.space; } if (0 != i) { os << fmt.space; }
os << column(ml, i) os << column(ml, i)
<< ((M<T,P>::cols-1 != i) ? fmt.space : fmt.delim_right) << ((cols-1 != i) ? fmt.space : fmt.delim_right)
<< fmt.space << fmt.space
<< ((0 != i) ? fmt.space : fmt.delim_left) << ((0 != i) ? fmt.space : fmt.delim_left)
<< column(mr, i); << column(mr, i);
if (M<T,P>::cols-1 != i) { os << fmt.newline; } if (cols-1 != i) { os << fmt.newline; }
} }
} }
break; break;