# GLM: compatibility.hpp Source File

- Main Page
- Namespaces
- Files

- File List

# compatibility.hpp

    00001
    00002 // OpenGL Mathematics Copyright (c) 2005 - 2009 G-Truc Creation (www.g-truc.net)
    00004 // Created : 2007-01-24
    00005 // Updated : 2008-10-24
    00006 // Licence : This source is under MIT License
    00007 // File    : glm/gtx/compatibility.h
    00009 // Dependency:
    00010 // - GLM core
    00011 // - GLM_GTX_half_float
    00012 // - GLM_GTX_double_float
    00014
    00015 #ifndef glm_gtx_compatibility
    00016 #define glm_gtx_compatibility
    00017
    00018 // Dependency:
    00019 #include "../glm.hpp"
    00020 #include "../gtc/half_float.hpp"
    00021 #include "../gtc/double_float.hpp"
    00022
    00023 #ifdef GLM_COMPILER_VC
    00024 #include <cfloat>
    00025 #endif
    00026 #ifdef GLM_COMPILER_GCC
    00027 #include <cmath>
    00028 #endif
    00029
    00030 namespace glm
    00031 {
    00032         namespace test{
    00033                 void main_gtx_compatibility();
    00034         }//namespace test
    00035
    00036         namespace gtx{
    00038         namespace compatibility
    00039         {
    00040                 template <typename T> inline T lerp(T x, T y, T a){return mix(x, y, a);}
    00041                 template <typename T> inline detail::tvec2<T> lerp(const detail::tvec2<T>& x, const detail::tvec2<T>& y, T a){return mix(x, y, a);}
    00042                 template <typename T> inline detail::tvec3<T> lerp(const detail::tvec3<T>& x, const detail::tvec3<T>& y, T a){return mix(x, y, a);}
    00043                 template <typename T> inline detail::tvec4<T> lerp(const detail::tvec4<T>& x, const detail::tvec4<T>& y, T a){return mix(x, y, a);}
    00044                 template <typename T> inline detail::tvec2<T> lerp(const detail::tvec2<T>& x, const detail::tvec2<T>& y, const detail::tvec2<T>& a){return mix(x, y, a);}
    00045                 template <typename T> inline detail::tvec3<T> lerp(const detail::tvec3<T>& x, const detail::tvec3<T>& y, const detail::tvec3<T>& a){return mix(x, y, a);}
    00046                 template <typename T> inline detail::tvec4<T> lerp(const detail::tvec4<T>& x, const detail::tvec4<T>& y, const detail::tvec4<T>& a){return mix(x, y, a);}
    00047
    00048                 template <typename T> inline T saturate(T x){return clamp(x, T(0), T(1));}
    00049                 template <typename T> inline detail::tvec2<T> saturate(const detail::tvec2<T>& x){return clamp(x, T(0), T(1));}
    00050                 template <typename T> inline detail::tvec3<T> saturate(const detail::tvec3<T>& x){return clamp(x, T(0), T(1));}
    00051                 template <typename T> inline detail::tvec4<T> saturate(const detail::tvec4<T>& x){return clamp(x, T(0), T(1));}
    00052
    00053                 template <typename T> inline T atan2(T x, T y){return atan(x, y);}
    00054                 template <typename T> inline detail::tvec2<T> atan2(const detail::tvec2<T>& x, const detail::tvec2<T>& y){return atan(x, y);}
    00055                 template <typename T> inline detail::tvec3<T> atan2(const detail::tvec3<T>& x, const detail::tvec3<T>& y){return atan(x, y);}
    00056                 template <typename T> inline detail::tvec4<T> atan2(const detail::tvec4<T>& x, const detail::tvec4<T>& y){return atan(x, y);}
    00057
    00058                 template <typename genType> bool isfinite(genType const & x);
    00059                 template <typename valType> detail::tvec2<bool> isfinite(const detail::tvec2<valType>& x);
    00060                 template <typename valType> detail::tvec3<bool> isfinite(const detail::tvec3<valType>& x);
    00061                 template <typename valType> detail::tvec4<bool> isfinite(const detail::tvec4<valType>& x);
    00062
    00063                 template <typename genType> bool isinf(genType const & x);
    00064                 template <typename genType> detail::tvec2<bool> isinf(const detail::tvec2<genType>& x);
    00065                 template <typename genType> detail::tvec3<bool> isinf(const detail::tvec3<genType>& x);
    00066                 template <typename genType> detail::tvec4<bool> isinf(const detail::tvec4<genType>& x);
    00067
    00068                 template <typename genType> bool isnan(genType const & x);
    00069                 template <typename genType> detail::tvec2<bool> isnan(const detail::tvec2<genType>& x);
    00070                 template <typename genType> detail::tvec3<bool> isnan(const detail::tvec3<genType>& x);
    00071                 template <typename genType> detail::tvec4<bool> isnan(const detail::tvec4<genType>& x);
    00072
    00073                 typedef bool                                            bool1;
    00074                 typedef detail::tvec2<bool>                     bool2;
    00075                 typedef detail::tvec3<bool>                     bool3;
    00076                 typedef detail::tvec4<bool>                     bool4;
    00077
    00078                 typedef bool                                            bool1x1;
    00079                 typedef detail::tmat2x2<bool>           bool2x2;
    00080                 typedef detail::tmat2x3<bool>           bool2x3;
    00081                 typedef detail::tmat2x4<bool>           bool2x4;
    00082                 typedef detail::tmat3x2<bool>           bool3x2;
    00083                 typedef detail::tmat3x3<bool>           bool3x3;
    00084                 typedef detail::tmat3x4<bool>           bool3x4;
    00085                 typedef detail::tmat4x2<bool>           bool4x2;
    00086                 typedef detail::tmat4x3<bool>           bool4x3;
    00087                 typedef detail::tmat4x4<bool>           bool4x4;
    00088
    00089                 typedef int                                                     int1;
    00090                 typedef detail::tvec2<int>                      int2;
    00091                 typedef detail::tvec3<int>                      int3;
    00092                 typedef detail::tvec4<int>                      int4;
    00093
    00094                 typedef int                                                     int1x1;
    00095                 typedef detail::tmat2x2<int>            int2x2;
    00096                 typedef detail::tmat2x3<int>            int2x3;
    00097                 typedef detail::tmat2x4<int>            int2x4;
    00098                 typedef detail::tmat3x2<int>            int3x2;
    00099                 typedef detail::tmat3x3<int>            int3x3;
    00100                 typedef detail::tmat3x4<int>            int3x4;
    00101                 typedef detail::tmat4x2<int>            int4x2;
    00102                 typedef detail::tmat4x3<int>            int4x3;
    00103                 typedef detail::tmat4x4<int>            int4x4;
    00104
    00105                 typedef gtc::half_float::half                                           half1;
    00106                 typedef detail::tvec2<gtc::half_float::half>            half2;
    00107                 typedef detail::tvec3<gtc::half_float::half>            half3;
    00108                 typedef detail::tvec4<gtc::half_float::half>            half4;
    00109
    00110                 typedef gtc::half_float::half                                           half1x1;
    00111                 typedef detail::tmat2x2<gtc::half_float::half>          half2x2;
    00112                 typedef detail::tmat2x3<gtc::half_float::half>          half2x3;
    00113                 typedef detail::tmat2x4<gtc::half_float::half>          half2x4;
    00114                 typedef detail::tmat3x2<gtc::half_float::half>          half3x2;
    00115                 typedef detail::tmat3x3<gtc::half_float::half>          half3x3;
    00116                 typedef detail::tmat3x4<gtc::half_float::half>          half3x4;
    00117                 typedef detail::tmat4x2<gtc::half_float::half>          half4x2;
    00118                 typedef detail::tmat4x3<gtc::half_float::half>          half4x3;
    00119                 typedef detail::tmat4x4<gtc::half_float::half>          half4x4;
    00120
    00121                 typedef float                                           float1;
    00122                 typedef detail::tvec2<float>            float2;
    00123                 typedef detail::tvec3<float>            float3;
    00124                 typedef detail::tvec4<float>            float4;
    00125
    00126                 typedef float                                           float1x1;
    00127                 typedef detail::tmat2x2<float>          float2x2;
    00128                 typedef detail::tmat2x3<float>          float2x3;
    00129                 typedef detail::tmat2x4<float>          float2x4;
    00130                 typedef detail::tmat3x2<float>          float3x2;
    00131                 typedef detail::tmat3x3<float>          float3x3;
    00132                 typedef detail::tmat3x4<float>          float3x4;
    00133                 typedef detail::tmat4x2<float>          float4x2;
    00134                 typedef detail::tmat4x3<float>          float4x3;
    00135                 typedef detail::tmat4x4<float>          float4x4;
    00136
    00137                 typedef double                                          double1;
    00138                 typedef detail::tvec2<double>           double2;
    00139                 typedef detail::tvec3<double>           double3;
    00140                 typedef detail::tvec4<double>           double4;
    00141
    00142                 typedef double                                          double1x1;
    00143                 typedef detail::tmat2x2<double>         double2x2;
    00144                 typedef detail::tmat2x3<double>         double2x3;
    00145                 typedef detail::tmat2x4<double>         double2x4;
    00146                 typedef detail::tmat3x2<double>         double3x2;
    00147                 typedef detail::tmat3x3<double>         double3x3;
    00148                 typedef detail::tmat3x4<double>         double3x4;
    00149                 typedef detail::tmat4x2<double>         double4x2;
    00150                 typedef detail::tmat4x3<double>         double4x3;
    00151                 typedef detail::tmat4x4<double>         double4x4;
    00152
    00153         }//namespace compatibility
    00154         }//namespace gtx
    00155 }//namespace glm
    00156
    00157 #define GLM_GTX_compatibility namespace gtx::compatibility
    00158 #ifndef GLM_GTX_GLOBAL
    00159 namespace glm {using GLM_GTX_compatibility;}
    00160 #endif//GLM_GTC_GLOBAL
    00161
    00162 #include "compatibility.inl"
    00163
    00164 #endif//glm_gtx_compatibility
    00165
    00166
    00167
    00168
    00169
    00170
    00171
    00172
    00173
    00174