/////////////////////////////////////////////////////////////////////////////////////////////////// // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) /////////////////////////////////////////////////////////////////////////////////////////////////// // Created : 2011-01-15 // Updated : 2011-01-15 // Licence : This source is under MIT License // File : glm/gtc/swizzle.inl /////////////////////////////////////////////////////////////////////////////////////////////////// // Dependency: // - GLM core /////////////////////////////////////////////////////////////////////////////////////////////////// namespace glm{ namespace gtc{ namespace swizzle{ template class vecType> GLM_FUNC_QUALIFIER T swizzle ( vecType const & v, comp x ) { assert(int(x) < int(vecType::value_size)); return v[x]; } template class vecType> GLM_FUNC_QUALIFIER detail::tvec2 swizzle ( vecType const & v, comp x, comp y ) { return detail::tvec2( v[x], v[y]); } template class vecType> GLM_FUNC_QUALIFIER detail::tvec3 swizzle ( vecType const & v, comp x, comp y, comp z ) { return detail::tvec3( v[x], v[y], v[z]); } template class vecType> GLM_FUNC_QUALIFIER detail::tvec4 swizzle ( vecType const & v, comp x, comp y, comp z, comp w ) { return detail::tvec4(v[x], v[y], v[z], v[w]); } template GLM_FUNC_QUALIFIER T& swizzle ( detail::tvec4 & v, comp x ) { return v[x]; } template GLM_FUNC_QUALIFIER detail::tref2 swizzle ( detail::tvec4 & v, comp x, comp y ) { return detail::tref2(v[x], v[y]); } template GLM_FUNC_QUALIFIER detail::tref3 swizzle ( detail::tvec4 & v, comp x, comp y, comp z ) { return detail::tref3(v[x], v[y], v[z]); } template GLM_FUNC_QUALIFIER detail::tref4 swizzle ( detail::tvec4 & v, comp x, comp y, comp z, comp w ) { return detail::tref4(v[x], v[y], v[z], v[w]); } /* template GLM_FUNC_QUALIFIER float& swizzle ( detail::tvec4 & v ) { return v[x]; } template GLM_FUNC_QUALIFIER int& swizzle ( detail::tvec4 & v ) { return v[x]; } template GLM_FUNC_QUALIFIER detail::tref2 swizzle ( detail::tvec4 & v ) { return detail::tref2(v[x], v[y]); } template GLM_FUNC_QUALIFIER detail::tref2 swizzle ( detail::tvec4 & v ) { return detail::tref2(v[x], v[y]); } template GLM_FUNC_QUALIFIER detail::tref3 swizzle ( detail::tvec4 & v ) { return detail::tref3(v[x], v[y], v[z]); } template GLM_FUNC_QUALIFIER detail::tref3 swizzle ( detail::tvec4 & v ) { return detail::tref3(v[x], v[y], v[z]); } template GLM_FUNC_QUALIFIER detail::tref4 swizzle ( detail::tvec4 & v ) { return detail::tref4(v[x], v[y], v[z], v[w]); } template GLM_FUNC_QUALIFIER detail::tref4 swizzle ( detail::tvec4 & v ) { return detail::tref4(v[x], v[y], v[z], v[w]); } */ }//namespace swizzle }//namespace gtc }//namespace glm