Created
September 30, 2011 03:32
-
-
Save madebyjeffrey/1252571 to your computer and use it in GitHub Desktop.
vec4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
template <typename T> | |
struct tvec4 | |
{ | |
enum ctor{null}; | |
typedef T value_type; | |
typedef std::size_t size_type; | |
GLM_FUNC_DECL size_type length() const; | |
static GLM_FUNC_DECL size_type value_size(); | |
typedef tvec4<T> type; | |
typedef tvec4<bool> bool_type; | |
////////////////////////////////////// | |
// Data | |
# if(GLM_COMPONENT == GLM_COMPONENT_ONLY_XYZW) | |
value_type x, y, z, w; | |
# elif(GLM_COMPONENT == GLM_COMPONENT_MS_EXT) | |
union | |
{ | |
struct{value_type x, y, z, w;}; | |
struct{value_type r, g, b, a;}; | |
struct{value_type s, t, p, q;}; | |
}; | |
# else//(GLM_COMPONENT == GLM_COMPONENT_GLSL_NAMES) | |
union {value_type x, r, s;}; | |
union {value_type y, g, t;}; | |
union {value_type z, b, p;}; | |
union {value_type w, a, q;}; | |
# endif//GLM_COMPONENT | |
////////////////////////////////////// | |
// Accesses | |
GLM_FUNC_DECL value_type & operator[](size_type i); | |
GLM_FUNC_DECL value_type const & operator[](size_type i) const; | |
////////////////////////////////////// | |
// Implicit basic constructors | |
GLM_FUNC_DECL tvec4(); | |
GLM_FUNC_DECL tvec4(type const & v); | |
////////////////////////////////////// | |
// Explicit basic constructors | |
GLM_FUNC_DECL explicit tvec4( | |
ctor); | |
GLM_FUNC_DECL explicit tvec4( | |
value_type const & s); | |
GLM_FUNC_DECL explicit tvec4( | |
value_type const & s0, | |
value_type const & s1, | |
value_type const & s2, | |
value_type const & s3); | |
////////////////////////////////////// | |
// Swizzle constructors | |
GLM_FUNC_DECL tvec4(tref4<T> const & r); | |
////////////////////////////////////// | |
// Convertion scalar constructors | |
//! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) | |
template <typename U> | |
GLM_FUNC_DECL explicit tvec4( | |
U const & x); | |
//! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) | |
template <typename A, typename B, typename C, typename D> | |
GLM_FUNC_DECL explicit tvec4( | |
A const & x, | |
B const & y, | |
C const & z, | |
D const & w); | |
////////////////////////////////////// | |
// Convertion vector constructors | |
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) | |
template <typename A, typename B, typename C> | |
GLM_FUNC_DECL explicit tvec4(tvec2<A> const & v, B const & s1, C const & s2); | |
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) | |
template <typename A, typename B, typename C> | |
GLM_FUNC_DECL explicit tvec4(A const & s1, tvec2<B> const & v, C const & s2); | |
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) | |
template <typename A, typename B, typename C> | |
GLM_FUNC_DECL explicit tvec4(A const & s1, B const & s2, tvec2<C> const & v); | |
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) | |
template <typename A, typename B> | |
GLM_FUNC_DECL explicit tvec4(tvec3<A> const & v, B const & s); | |
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) | |
template <typename A, typename B> | |
GLM_FUNC_DECL explicit tvec4(A const & s, tvec3<B> const & v); | |
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) | |
template <typename A, typename B> | |
GLM_FUNC_DECL explicit tvec4(tvec2<A> const & v1, tvec2<B> const & v2); | |
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) | |
template <typename U> | |
GLM_FUNC_DECL explicit tvec4(tvec4<U> const & v); | |
////////////////////////////////////// | |
// Unary arithmetic operators | |
GLM_FUNC_DECL tvec4<T> & operator= (tvec4<T> const & v); | |
template <typename U> | |
GLM_FUNC_DECL tvec4<T> & operator= (tvec4<U> const & v); | |
template <typename U> | |
GLM_FUNC_DECL tvec4<T> & operator+=(U const & s); | |
template <typename U> | |
GLM_FUNC_DECL tvec4<T> & operator+=(tvec4<U> const & v); | |
template <typename U> | |
GLM_FUNC_DECL tvec4<T> & operator-=(U const & s); | |
template <typename U> | |
GLM_FUNC_DECL tvec4<T> & operator-=(tvec4<U> const & v); | |
template <typename U> | |
GLM_FUNC_DECL tvec4<T> & operator*=(U const & s); | |
template <typename U> | |
GLM_FUNC_DECL tvec4<T> & operator*=(tvec4<U> const & v); | |
template <typename U> | |
GLM_FUNC_DECL tvec4<T> & operator/=(U const & s); | |
template <typename U> | |
GLM_FUNC_DECL tvec4<T> & operator/=(tvec4<U> const & v); | |
GLM_FUNC_DECL tvec4<T> & operator++(); | |
GLM_FUNC_DECL tvec4<T> & operator--(); | |
////////////////////////////////////// | |
// Unary bit operators | |
template <typename U> | |
GLM_FUNC_DECL tvec4<T> & operator%= (U const & s); | |
template <typename U> | |
GLM_FUNC_DECL tvec4<T> & operator%= (tvec4<U> const & v); | |
template <typename U> | |
GLM_FUNC_DECL tvec4<T> & operator&= (U const & s); | |
template <typename U> | |
GLM_FUNC_DECL tvec4<T> & operator&= (tvec4<U> const & v); | |
template <typename U> | |
GLM_FUNC_DECL tvec4<T> & operator|= (U const & s); | |
template <typename U> | |
GLM_FUNC_DECL tvec4<T> & operator|= (tvec4<U> const & v); | |
template <typename U> | |
GLM_FUNC_DECL tvec4<T> & operator^= (U const & s); | |
template <typename U> | |
GLM_FUNC_DECL tvec4<T> & operator^= (tvec4<U> const & v); | |
template <typename U> | |
GLM_FUNC_DECL tvec4<T> & operator<<=(U const & s); | |
template <typename U> | |
GLM_FUNC_DECL tvec4<T> & operator<<=(tvec4<U> const & v); | |
template <typename U> | |
GLM_FUNC_DECL tvec4<T> & operator>>=(U const & s); | |
template <typename U> | |
GLM_FUNC_DECL tvec4<T> & operator>>=(tvec4<U> const & v); | |
////////////////////////////////////// | |
// Swizzle operators | |
GLM_FUNC_DECL value_type swizzle(comp X) const; | |
GLM_FUNC_DECL tvec2<T> swizzle(comp X, comp Y) const; | |
GLM_FUNC_DECL tvec3<T> swizzle(comp X, comp Y, comp Z) const; | |
GLM_FUNC_DECL tvec4<T> swizzle(comp X, comp Y, comp Z, comp W) const; | |
GLM_FUNC_DECL tref4<T> swizzle(comp X, comp Y, comp Z, comp W); | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment