diff options
Diffstat (limited to 'external/include/glm/gtx/extended_min_max.hpp')
-rw-r--r-- | external/include/glm/gtx/extended_min_max.hpp | 227 |
1 files changed, 160 insertions, 67 deletions
diff --git a/external/include/glm/gtx/extended_min_max.hpp b/external/include/glm/gtx/extended_min_max.hpp index f4d8859..b061bc8 100644 --- a/external/include/glm/gtx/extended_min_max.hpp +++ b/external/include/glm/gtx/extended_min_max.hpp @@ -2,130 +2,223 @@ /// @file glm/gtx/extended_min_max.hpp /// /// @see core (dependence) -/// @see gtx_half_float (dependence) /// -/// @defgroup gtx_extented_min_max GLM_GTX_extented_min_max +/// @defgroup gtx_extended_min_max GLM_GTX_extented_min_max /// @ingroup gtx /// -/// Min and max functions for 3 to 4 parameters. +/// Include <glm/gtx/extented_min_max.hpp> to use the features of this extension. /// -/// <glm/gtx/extented_min_max.hpp> need to be included to use these functionalities. +/// Min and max functions for 3 to 4 parameters. #pragma once // Dependency: #include "../glm.hpp" +#ifndef GLM_ENABLE_EXPERIMENTAL +# error "GLM: GLM_GTX_extented_min_max is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it." +#endif + #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED) # pragma message("GLM: GLM_GTX_extented_min_max extension included") #endif namespace glm { - /// @addtogroup gtx_extented_min_max + /// @addtogroup gtx_extended_min_max /// @{ - /// Return the minimum component-wise values of 3 inputs + /// Return the minimum component-wise values of 3 inputs /// @see gtx_extented_min_max - template <typename T> + template<typename T> GLM_FUNC_DECL T min( - T const & x, - T const & y, - T const & z); + T const& x, + T const& y, + T const& z); /// Return the minimum component-wise values of 3 inputs /// @see gtx_extented_min_max - template <typename T, template <typename> class C> + template<typename T, template<typename> class C> GLM_FUNC_DECL C<T> min( - C<T> const & x, - typename C<T>::T const & y, - typename C<T>::T const & z); + C<T> const& x, + typename C<T>::T const& y, + typename C<T>::T const& z); - /// Return the minimum component-wise values of 3 inputs + /// Return the minimum component-wise values of 3 inputs /// @see gtx_extented_min_max - template <typename T, template <typename> class C> + template<typename T, template<typename> class C> GLM_FUNC_DECL C<T> min( - C<T> const & x, - C<T> const & y, - C<T> const & z); + C<T> const& x, + C<T> const& y, + C<T> const& z); - /// Return the minimum component-wise values of 4 inputs + /// Return the minimum component-wise values of 4 inputs /// @see gtx_extented_min_max - template <typename T> + template<typename T> GLM_FUNC_DECL T min( - T const & x, - T const & y, - T const & z, - T const & w); + T const& x, + T const& y, + T const& z, + T const& w); - /// Return the minimum component-wise values of 4 inputs + /// Return the minimum component-wise values of 4 inputs /// @see gtx_extented_min_max - template <typename T, template <typename> class C> + template<typename T, template<typename> class C> GLM_FUNC_DECL C<T> min( - C<T> const & x, - typename C<T>::T const & y, - typename C<T>::T const & z, - typename C<T>::T const & w); + C<T> const& x, + typename C<T>::T const& y, + typename C<T>::T const& z, + typename C<T>::T const& w); /// Return the minimum component-wise values of 4 inputs /// @see gtx_extented_min_max - template <typename T, template <typename> class C> + template<typename T, template<typename> class C> GLM_FUNC_DECL C<T> min( - C<T> const & x, - C<T> const & y, - C<T> const & z, - C<T> const & w); + C<T> const& x, + C<T> const& y, + C<T> const& z, + C<T> const& w); - /// Return the maximum component-wise values of 3 inputs + /// Return the maximum component-wise values of 3 inputs /// @see gtx_extented_min_max - template <typename T> + template<typename T> GLM_FUNC_DECL T max( - T const & x, - T const & y, - T const & z); + T const& x, + T const& y, + T const& z); /// Return the maximum component-wise values of 3 inputs /// @see gtx_extented_min_max - template <typename T, template <typename> class C> + template<typename T, template<typename> class C> GLM_FUNC_DECL C<T> max( - C<T> const & x, - typename C<T>::T const & y, - typename C<T>::T const & z); + C<T> const& x, + typename C<T>::T const& y, + typename C<T>::T const& z); - /// Return the maximum component-wise values of 3 inputs + /// Return the maximum component-wise values of 3 inputs /// @see gtx_extented_min_max - template <typename T, template <typename> class C> + template<typename T, template<typename> class C> GLM_FUNC_DECL C<T> max( - C<T> const & x, - C<T> const & y, - C<T> const & z); + C<T> const& x, + C<T> const& y, + C<T> const& z); /// Return the maximum component-wise values of 4 inputs /// @see gtx_extented_min_max - template <typename T> + template<typename T> GLM_FUNC_DECL T max( - T const & x, - T const & y, - T const & z, - T const & w); + T const& x, + T const& y, + T const& z, + T const& w); - /// Return the maximum component-wise values of 4 inputs + /// Return the maximum component-wise values of 4 inputs /// @see gtx_extented_min_max - template <typename T, template <typename> class C> + template<typename T, template<typename> class C> GLM_FUNC_DECL C<T> max( - C<T> const & x, - typename C<T>::T const & y, - typename C<T>::T const & z, - typename C<T>::T const & w); + C<T> const& x, + typename C<T>::T const& y, + typename C<T>::T const& z, + typename C<T>::T const& w); - /// Return the maximum component-wise values of 4 inputs + /// Return the maximum component-wise values of 4 inputs /// @see gtx_extented_min_max - template <typename T, template <typename> class C> + template<typename T, template<typename> class C> GLM_FUNC_DECL C<T> max( - C<T> const & x, - C<T> const & y, - C<T> const & z, - C<T> const & w); + C<T> const& x, + C<T> const& y, + C<T> const& z, + C<T> const& w); + + /// Returns y if y < x; otherwise, it returns x. If one of the two arguments is NaN, the value of the other argument is returned. + /// + /// @tparam genType Floating-point or integer; scalar or vector types. + /// + /// @see gtx_extented_min_max + template<typename genType> + GLM_FUNC_DECL genType fmin(genType x, genType y); + + /// Returns y if y < x; otherwise, it returns x. If one of the two arguments is NaN, the value of the other argument is returned. + /// + /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector + /// @tparam T Floating-point scalar types + /// @tparam Q Value from qualifier enum + /// + /// @see gtx_extented_min_max + /// @see <a href="http://en.cppreference.com/w/cpp/numeric/math/fmin">std::fmin documentation</a> + template<length_t L, typename T, qualifier Q> + GLM_FUNC_DECL vec<L, T, Q> fmin(vec<L, T, Q> const& x, T y); + + /// Returns y if y < x; otherwise, it returns x. If one of the two arguments is NaN, the value of the other argument is returned. + /// + /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector + /// @tparam T Floating-point scalar types + /// @tparam Q Value from qualifier enum + /// + /// @see gtx_extented_min_max + /// @see <a href="http://en.cppreference.com/w/cpp/numeric/math/fmin">std::fmin documentation</a> + template<length_t L, typename T, qualifier Q> + GLM_FUNC_DECL vec<L, T, Q> fmin(vec<L, T, Q> const& x, vec<L, T, Q> const& y); + + /// Returns y if x < y; otherwise, it returns x. If one of the two arguments is NaN, the value of the other argument is returned. + /// + /// @tparam genType Floating-point; scalar or vector types. + /// + /// @see gtx_extented_min_max + /// @see <a href="http://en.cppreference.com/w/cpp/numeric/math/fmax">std::fmax documentation</a> + template<typename genType> + GLM_FUNC_DECL genType fmax(genType x, genType y); + + /// Returns y if x < y; otherwise, it returns x. If one of the two arguments is NaN, the value of the other argument is returned. + /// + /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector + /// @tparam T Floating-point scalar types + /// @tparam Q Value from qualifier enum + /// + /// @see gtx_extented_min_max + /// @see <a href="http://en.cppreference.com/w/cpp/numeric/math/fmax">std::fmax documentation</a> + template<length_t L, typename T, qualifier Q> + GLM_FUNC_DECL vec<L, T, Q> fmax(vec<L, T, Q> const& x, T y); + + /// Returns y if x < y; otherwise, it returns x. If one of the two arguments is NaN, the value of the other argument is returned. + /// + /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector + /// @tparam T Floating-point scalar types + /// @tparam Q Value from qualifier enum + /// + /// @see gtx_extented_min_max + /// @see <a href="http://en.cppreference.com/w/cpp/numeric/math/fmax">std::fmax documentation</a> + template<length_t L, typename T, qualifier Q> + GLM_FUNC_DECL vec<L, T, Q> fmax(vec<L, T, Q> const& x, vec<L, T, Q> const& y); + + /// Returns min(max(x, minVal), maxVal) for each component in x. If one of the two arguments is NaN, the value of the other argument is returned. + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see gtx_extented_min_max + template<typename genType> + GLM_FUNC_DECL genType fclamp(genType x, genType minVal, genType maxVal); + + /// Returns min(max(x, minVal), maxVal) for each component in x. If one of the two arguments is NaN, the value of the other argument is returned. + /// + /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector + /// @tparam T Floating-point scalar types + /// @tparam Q Value from qualifier enum + /// + /// @see gtx_extented_min_max + template<length_t L, typename T, qualifier Q> + GLM_FUNC_DECL vec<L, T, Q> fclamp(vec<L, T, Q> const& x, T minVal, T maxVal); + + /// Returns min(max(x, minVal), maxVal) for each component in x. If one of the two arguments is NaN, the value of the other argument is returned. + /// + /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector + /// @tparam T Floating-point scalar types + /// @tparam Q Value from qualifier enum + /// + /// @see gtx_extented_min_max + template<length_t L, typename T, qualifier Q> + GLM_FUNC_DECL vec<L, T, Q> fclamp(vec<L, T, Q> const& x, vec<L, T, Q> const& minVal, vec<L, T, Q> const& maxVal); + /// @} }//namespace glm |