From 2cf02a836c94aa320126e5059a590dd0b9ee6544 Mon Sep 17 00:00:00 2001 From: Christophe Riccio <g.truc.creation@gmail.com> Date: Sat, 5 Feb 2011 00:49:50 +0000 Subject: [PATCH 01/22] Apply 'basic grouping patch' Ticket #36 --- doc/doxyfile | 6 ++--- glm/core/func_common.hpp | 5 ++++ glm/core/func_exponential.hpp | 5 ++++ glm/core/func_geometric.hpp | 5 ++++ glm/core/func_integer.hpp | 5 ++++ glm/core/func_matrix.hpp | 5 ++++ glm/core/func_noise.hpp | 5 ++++ glm/core/func_packing.hpp | 5 ++++ glm/core/func_trigonometric.hpp | 5 ++++ glm/core/func_vector_relational.hpp | 5 ++++ glm/core/type.hpp | 39 +++++++++++++++++++++++++++++ glm/core/type_float.hpp | 9 ++++--- glm/core/type_half.hpp | 2 ++ glm/core/type_int.hpp | 19 +++++++++----- glm/core/type_mat2x2.hpp | 12 ++++++--- glm/core/type_mat2x3.hpp | 12 ++++++--- glm/core/type_mat2x4.hpp | 9 ++++--- glm/core/type_mat3x2.hpp | 9 ++++--- glm/core/type_mat3x3.hpp | 12 ++++++--- glm/core/type_mat3x4.hpp | 9 ++++--- glm/core/type_mat4x2.hpp | 12 ++++++--- glm/core/type_mat4x3.hpp | 12 ++++++--- glm/core/type_mat4x4.hpp | 12 ++++++--- glm/core/type_vec2.hpp | 29 ++++++++++++++------- glm/core/type_vec3.hpp | 29 ++++++++++++++------- glm/core/type_vec4.hpp | 29 ++++++++++++++------- glm/glm.hpp | 20 --------------- glm/gtc/half_float.hpp | 5 ++++ glm/gtc/matrix_access.hpp | 5 ++++ glm/gtc/matrix_integer.hpp | 5 ++++ glm/gtc/matrix_inverse.hpp | 5 ++++ glm/gtc/matrix_transform.hpp | 4 +++ glm/gtc/quaternion.hpp | 6 +++++ glm/gtc/type_precision.hpp | 5 ++++ glm/gtc/type_ptr.hpp | 5 ++++ glm/gtx/associated_min_max.hpp | 4 +++ glm/gtx/bit.hpp | 3 +++ glm/gtx/closest_point.hpp | 4 +++ glm/gtx/color_cast.hpp | 5 ++++ glm/gtx/color_space.hpp | 5 ++++ glm/gtx/color_space_YCoCg.hpp | 4 +++ glm/gtx/compatibility.hpp | 5 ++++ glm/gtx/component_wise.hpp | 5 ++++ glm/gtx/epsilon.hpp | 7 +++++- glm/gtx/euler_angles.hpp | 7 +++++- glm/gtx/extend.hpp | 5 ++++ glm/gtx/extented_min_max.hpp | 5 ++++ glm/gtx/fast_exponential.hpp | 4 +++ glm/gtx/fast_square_root.hpp | 5 ++++ glm/gtx/fast_trigonometry.hpp | 5 ++++ glm/gtx/handed_coordinate_space.hpp | 7 +++++- glm/gtx/inertia.hpp | 5 ++++ glm/gtx/int_10_10_10_2.hpp | 5 ++++ glm/gtx/integer.hpp | 5 ++++ glm/gtx/intersect.hpp | 7 +++++- glm/gtx/log_base.hpp | 5 ++++ glm/gtx/matrix_cross_product.hpp | 5 ++++ glm/gtx/matrix_major_storage.hpp | 7 +++++- glm/gtx/matrix_operation.hpp | 7 +++++- glm/gtx/matrix_query.hpp | 6 ++++- glm/gtx/mixed_product.hpp | 5 ++++ glm/gtx/multiple.hpp | 5 ++++ glm/gtx/norm.hpp | 7 +++++- glm/gtx/normal.hpp | 5 ++++ glm/gtx/normalize_dot.hpp | 5 ++++ glm/gtx/number_precision.hpp | 4 +++ glm/gtx/ocl_type.hpp | 5 ++++ glm/gtx/optimum_pow.hpp | 7 +++++- glm/gtx/orthonormalize.hpp | 7 +++++- glm/gtx/perpendicular.hpp | 8 +++++- glm/gtx/polar_coordinates.hpp | 5 ++++ glm/gtx/projection.hpp | 5 ++++ glm/gtx/quaternion.hpp | 7 +++++- glm/gtx/random.hpp | 6 ++++- glm/gtx/raw_data.hpp | 5 ++++ glm/gtx/reciprocal.hpp | 5 ++++ glm/gtx/rotate_vector.hpp | 21 ++++++++++------ glm/gtx/simd_mat4.hpp | 9 ++++++- glm/gtx/simd_vec4.hpp | 7 ++++++ glm/gtx/spline.hpp | 7 +++++- glm/gtx/string_cast.hpp | 5 ++++ glm/gtx/transform.hpp | 5 ++++ glm/gtx/transform2.hpp | 5 ++++ glm/gtx/unsigned_int.hpp | 5 ++++ glm/gtx/vec1.hpp | 18 ++++++------- glm/gtx/vector_access.hpp | 5 ++++ glm/gtx/vector_angle.hpp | 5 ++++ glm/gtx/vector_query.hpp | 7 +++++- glm/gtx/verbose_operator.hpp | 5 ++++ glm/gtx/wrap.hpp | 5 ++++ 90 files changed, 570 insertions(+), 128 deletions(-) diff --git a/doc/doxyfile b/doc/doxyfile index 75a915c3..128e5113 100644 --- a/doc/doxyfile +++ b/doc/doxyfile @@ -590,7 +590,7 @@ WARN_LOGFILE = # directories like "/usr/src/myproject". Separate the files or directories # with spaces. -INPUT = ../glm +INPUT = ../glm . # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is @@ -607,7 +607,7 @@ INPUT_ENCODING = UTF-8 # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 -FILE_PATTERNS = *.hpp +FILE_PATTERNS = *.hpp *.doxy # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. @@ -641,7 +641,7 @@ EXCLUDE_PATTERNS = # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test -EXCLUDE_SYMBOLS = detail +EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see diff --git a/glm/core/func_common.hpp b/glm/core/func_common.hpp index 2a5f0e92..df3ac062 100644 --- a/glm/core/func_common.hpp +++ b/glm/core/func_common.hpp @@ -21,6 +21,9 @@ namespace glm //! Define common functions from Section 8.3 of GLSL 1.30.8 specification. Included in glm namespace. namespace common{ + /// \addtogroup core_funcs + ///@{ + //! Returns x if x >= 0; otherwise, it returns -x. //! (From GLSL 1.30.08 specification, section 8.3) template <typename genFIType> @@ -262,6 +265,8 @@ namespace glm template <typename genType, typename genIType> genType ldexp(genType const & x, genIType const & exp); + ///@} + }//namespace common }//namespace function }//namespace core diff --git a/glm/core/func_exponential.hpp b/glm/core/func_exponential.hpp index 2197b0f7..b5a027f0 100644 --- a/glm/core/func_exponential.hpp +++ b/glm/core/func_exponential.hpp @@ -21,6 +21,9 @@ namespace glm //! Define all exponential functions from Section 8.2 of GLSL 1.30.8 specification. Included in glm namespace. namespace exponential{ + /// \addtogroup core_funcs + ///@{ + //! Returns x raised to the y power. //! (From GLSL 1.30.08 specification, section 8.2) template <typename genType> @@ -59,6 +62,8 @@ namespace glm template <typename genType> genType inversesqrt(genType const & x); + ///@} + }//namespace exponential }//namespace function }//namespace core diff --git a/glm/core/func_geometric.hpp b/glm/core/func_geometric.hpp index 24029994..a6bdc37e 100644 --- a/glm/core/func_geometric.hpp +++ b/glm/core/func_geometric.hpp @@ -21,6 +21,9 @@ namespace glm //! Define all geometric functions from Section 8.4 of GLSL 1.30.8 specification. Included in glm namespace. namespace geometric{ + /// \addtogroup core_funcs + ///@{ + //! Returns the length of x, i.e., sqrt(x * x). //! (From GLSL 1.30.08 specification, section 8.4) template <typename genType> @@ -80,6 +83,8 @@ namespace glm genType const & N, typename genType::value_type const & eta); + ///@} + }//namespace geometric }//namespace function }//namespace core diff --git a/glm/core/func_integer.hpp b/glm/core/func_integer.hpp index 03319f36..4c50bb9f 100644 --- a/glm/core/func_integer.hpp +++ b/glm/core/func_integer.hpp @@ -21,6 +21,9 @@ namespace glm //! Define integer functions from Section 8.8 of GLSL 4.00.8 specification. namespace integer{ + /// \addtogroup core_funcs + ///@{ + //! Adds 32-bit unsigned integer x and y, returning the sum //! modulo pow(2, 32). The value carry is set to 0 if the sum was //! less than pow(2, 32), or to 1 otherwise. @@ -128,6 +131,8 @@ namespace glm template <typename T, template <typename> class C> typename C<T>::signed_type findMSB(C<T> const & Value); + ///@} + }//namespace integer }//namespace function }//namespace core diff --git a/glm/core/func_matrix.hpp b/glm/core/func_matrix.hpp index 28ef155a..4ea7ce07 100644 --- a/glm/core/func_matrix.hpp +++ b/glm/core/func_matrix.hpp @@ -21,6 +21,9 @@ namespace glm //! Define all matrix functions from Section 8.5 of GLSL 1.30.8 specification. Included in glm namespace. namespace matrix{ + /// \addtogroup core_funcs + ///@{ + //! Multiply matrix x by matrix y component-wise, i.e., //! result[i][j] is the scalar product of x[i][j] and y[i][j]. //! (From GLSL 1.30.08 specification, section 8.5) @@ -80,6 +83,8 @@ namespace glm detail::tmat4x4<T> inverse( detail::tmat4x4<T> const & m); + ///@} + }//namespace matrix }//namespace function }//namespace core diff --git a/glm/core/func_noise.hpp b/glm/core/func_noise.hpp index 99600bad..4af5f7d4 100644 --- a/glm/core/func_noise.hpp +++ b/glm/core/func_noise.hpp @@ -21,6 +21,9 @@ namespace glm // Define all noise functions from Section 8.9 of GLSL 1.30.8 specification. Included in glm namespace. namespace noise{ + /// \addtogroup core_funcs + ///@{ + // Returns a 1D noise value based on the input value x. // From GLSL 1.30.08 specification, section 8.9. template <typename genType> @@ -41,6 +44,8 @@ namespace glm template <typename genType> detail::tvec4<typename genType::value_type> noise4(genType const & x); + ///@} + }//namespace noise }//namespace function }//namespace core diff --git a/glm/core/func_packing.hpp b/glm/core/func_packing.hpp index 619b9391..9704d70a 100644 --- a/glm/core/func_packing.hpp +++ b/glm/core/func_packing.hpp @@ -21,6 +21,9 @@ namespace glm //! Define packing functions from section 8.4 floating-point pack and unpack functions of GLSL 4.00.8 specification namespace packing { + /// \addtogroup core_funcs + ///@{ + detail::uint32 packUnorm2x16(detail::tvec2<detail::float32> const & v); detail::uint32 packUnorm4x8(detail::tvec4<detail::float32> const & v); detail::uint32 packSnorm4x8(detail::tvec4<detail::float32> const & v); @@ -32,6 +35,8 @@ namespace glm double packDouble2x32(detail::tvec2<detail::uint32> const & v); detail::tvec2<detail::uint32> unpackDouble2x32(double const & v); + ///@} + }//namespace packing }//namespace function }//namespace core diff --git a/glm/core/func_trigonometric.hpp b/glm/core/func_trigonometric.hpp index 47a6e97a..4d147bfb 100644 --- a/glm/core/func_trigonometric.hpp +++ b/glm/core/func_trigonometric.hpp @@ -23,6 +23,9 @@ namespace glm //! Included in glm namespace. namespace trigonometric{ + /// \addtogroup core_funcs + ///@{ + //! Converts degrees to radians and returns the result. //! (From GLSL 1.30.08 specification, section 8.1) template <typename genType> @@ -111,6 +114,8 @@ namespace glm template <typename genType> genType atanh(genType const & x); + ///@} + }//namespace trigonometric }//namespace function }//namespace core diff --git a/glm/core/func_vector_relational.hpp b/glm/core/func_vector_relational.hpp index a6f5047d..66932279 100644 --- a/glm/core/func_vector_relational.hpp +++ b/glm/core/func_vector_relational.hpp @@ -24,6 +24,9 @@ namespace glm //! Included in glm namespace. namespace vector_relational { + /// \addtogroup core_funcs + ///@{ + //! Returns the component-wise comparison result of x < y. //! (From GLSL 1.30.08 specification, section 8.6) template <typename T, template <typename> class vecType> @@ -183,6 +186,8 @@ namespace glm return Result; } + ///@} + }//namespace vector_relational }//namespace function }//namespace core diff --git a/glm/core/type.hpp b/glm/core/type.hpp index f4d9f042..599163ba 100644 --- a/glm/core/type.hpp +++ b/glm/core/type.hpp @@ -80,64 +80,79 @@ namespace type #else //! 2 components vector of floating-point numbers. //! From GLSL 1.30.8 specification, section 4.1.5 Vectors. + //! \ingroup core_types typedef precision::mediump_vec2 vec2; //! 3 components vector of floating-point numbers. //! From GLSL 1.30.8 specification, section 4.1.5 Vectors. + //! \ingroup core_types typedef precision::mediump_vec3 vec3; //! 4 components vector of floating-point numbers. //! From GLSL 1.30.8 specification, section 4.1.5 Vectors. + //! \ingroup core_types typedef precision::mediump_vec4 vec4; //! 2 columns of 2 components matrix of floating-point numbers. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices) + //! \ingroup core_types typedef precision::mediump_mat2x2 mat2x2; //! 2 columns of 3 components matrix of floating-point numbers. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices) + //! \ingroup core_types typedef precision::mediump_mat2x3 mat2x3; //! 2 columns of 4 components matrix of floating-point numbers. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices) + //! \ingroup core_types typedef precision::mediump_mat2x4 mat2x4; //! 3 columns of 2 components matrix of floating-point numbers. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices) + //! \ingroup core_types typedef precision::mediump_mat3x2 mat3x2; //! 3 columns of 3 components matrix of floating-point numbers. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices) + //! \ingroup core_types typedef precision::mediump_mat3x3 mat3x3; //! 3 columns of 4 components matrix of floating-point numbers. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices) + //! \ingroup core_types typedef precision::mediump_mat3x4 mat3x4; //! 4 columns of 2 components matrix of floating-point numbers. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices) + //! \ingroup core_types typedef precision::mediump_mat4x2 mat4x2; //! 4 columns of 3 components matrix of floating-point numbers. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices) + //! \ingroup core_types typedef precision::mediump_mat4x3 mat4x3; //! 4 columns of 4 components matrix of floating-point numbers. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices) + //! \ingroup core_types typedef precision::mediump_mat4x4 mat4x4; #endif//GLM_PRECISION //! 2 columns of 2 components matrix of floating-point numbers. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices) + //! \ingroup core_types typedef mat2x2 mat2; //! 3 columns of 3 components matrix of floating-point numbers. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices) + //! \ingroup core_types typedef mat3x3 mat3; //! 4 columns of 4 components matrix of floating-point numbers. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices) + //! \ingroup core_types typedef mat4x4 mat4; ////////////////////////// @@ -158,14 +173,17 @@ namespace type #else //! 2 components vector of signed integer numbers. //! From GLSL 1.30.8 specification, section 4.1.5 Vectors. + //! \ingroup core_types typedef precision::mediump_ivec2 ivec2; //! 3 components vector of signed integer numbers. //! From GLSL 1.30.8 specification, section 4.1.5 Vectors. + //! \ingroup core_types typedef precision::mediump_ivec3 ivec3; //! 4 components vector of signed integer numbers. //! From GLSL 1.30.8 specification, section 4.1.5 Vectors. + //! \ingroup core_types typedef precision::mediump_ivec4 ivec4; #endif//GLM_PRECISION @@ -187,14 +205,17 @@ namespace type #else //! 2 components vector of unsigned integer numbers. //! From GLSL 1.30.8 specification, section 4.1.5 Vectors. + //! \ingroup core_types typedef precision::mediump_uvec2 uvec2; //! 3 components vector of unsigned integer numbers. //! From GLSL 1.30.8 specification, section 4.1.5 Vectors. + //! \ingroup core_types typedef precision::mediump_uvec3 uvec3; //! 4 components vector of unsigned integer numbers. //! From GLSL 1.30.8 specification, section 4.1.5 Vectors. + //! \ingroup core_types typedef precision::mediump_uvec4 uvec4; #endif//GLM_PRECISION @@ -203,14 +224,17 @@ namespace type //! 2 components vector of boolean. //! From GLSL 1.30.8 specification, section 4.1.5 Vectors. + //! \ingroup core_types typedef detail::tvec2<bool> bvec2; //! 3 components vector of boolean. //! From GLSL 1.30.8 specification, section 4.1.5 Vectors. + //! \ingroup core_types typedef detail::tvec3<bool> bvec3; //! 4 components vector of boolean. //! From GLSL 1.30.8 specification, section 4.1.5 Vectors. + //! \ingroup core_types typedef detail::tvec4<bool> bvec4; ////////////////////////// @@ -218,62 +242,77 @@ namespace type //! Vector of 2 double-precision floating-point numbers. //! From GLSL 4.00.8 specification, section 4.1 Basic Types. + //! \ingroup core_types typedef detail::tvec2<double> dvec2; //! Vector of 3 double-precision floating-point numbers. //! From GLSL 4.00.8 specification, section 4.1 Basic Types. + //! \ingroup core_types typedef detail::tvec3<double> dvec3; //! Vector of 4 double-precision floating-point numbers. //! From GLSL 4.00.8 specification, section 4.1 Basic Types. + //! \ingroup core_types typedef detail::tvec4<double> dvec4; //! 2 * 2 matrix of double-precision floating-point numbers. //! From GLSL 4.00.8 specification, section 4.1 Basic Types. + //! \ingroup core_types typedef detail::tmat2x2<double> dmat2; //! 3 * 3 matrix of double-precision floating-point numbers. //! From GLSL 4.00.8 specification, section 4.1 Basic Types. + //! \ingroup core_types typedef detail::tmat3x3<double> dmat3; //! 4 * 4 matrix of double-precision floating-point numbers. //! From GLSL 4.00.8 specification, section 4.1 Basic Types. + //! \ingroup core_types typedef detail::tmat4x4<double> dmat4; //! 2 * 2 matrix of double-precision floating-point numbers. //! From GLSL 4.00.8 specification, section 4.1 Basic Types. + //! \ingroup core_types typedef detail::tmat2x2<double> dmat2x2; //! 2 * 3 matrix of double-precision floating-point numbers. //! From GLSL 4.00.8 specification, section 4.1 Basic Types. + //! \ingroup core_types typedef detail::tmat2x3<double> dmat2x3; //! 2 * 4 matrix of double-precision floating-point numbers. //! From GLSL 4.00.8 specification, section 4.1 Basic Types. + //! \ingroup core_types typedef detail::tmat2x4<double> dmat2x4; //! 3 * 2 matrix of double-precision floating-point numbers. //! From GLSL 4.00.8 specification, section 4.1 Basic Types. + //! \ingroup core_types typedef detail::tmat3x2<double> dmat3x2; //! 3 * 3 matrix of double-precision floating-point numbers. //! From GLSL 4.00.8 specification, section 4.1 Basic Types. + //! \ingroup core_types typedef detail::tmat3x3<double> dmat3x3; //! 3 * 4 matrix of double-precision floating-point numbers. //! From GLSL 4.00.8 specification, section 4.1 Basic Types. + //! \ingroup core_types typedef detail::tmat3x4<double> dmat3x4; //! 4 * 2 matrix of double-precision floating-point numbers. //! From GLSL 4.00.8 specification, section 4.1 Basic Types. + //! \ingroup core_types typedef detail::tmat4x2<double> dmat4x2; //! 4 * 3 matrix of double-precision floating-point numbers. //! From GLSL 4.00.8 specification, section 4.1 Basic Types. + //! \ingroup core_types typedef detail::tmat4x3<double> dmat4x3; //! 4 * 4 matrix of double-precision floating-point numbers. //! From GLSL 4.00.8 specification, section 4.1 Basic Types. + //! \ingroup core_types typedef detail::tmat4x4<double> dmat4x4; }//namespace type diff --git a/glm/core/type_float.hpp b/glm/core/type_float.hpp index a274857d..43aabb41 100644 --- a/glm/core/type_float.hpp +++ b/glm/core/type_float.hpp @@ -38,16 +38,19 @@ namespace glm typedef double highp_float_t; //! Low precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification + //! \ingroup core_precision typedef lowp_float_t lowp_float; //! Medium precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification + //! \ingroup core_precision typedef mediump_float_t mediump_float; //! High precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification + //! \ingroup core_precision typedef highp_float_t highp_float; } //namespace precision diff --git a/glm/core/type_half.hpp b/glm/core/type_half.hpp index d451e5d8..cc8fed60 100644 --- a/glm/core/type_half.hpp +++ b/glm/core/type_half.hpp @@ -27,6 +27,8 @@ namespace glm float toFloat32(hdata value); hdata toFloat16(float const & value); + ///16-bit floating point type. + /// \ingroup gtc_half_float class thalf { public: diff --git a/glm/core/type_int.hpp b/glm/core/type_int.hpp index 2d046911..e788d333 100644 --- a/glm/core/type_int.hpp +++ b/glm/core/type_int.hpp @@ -63,32 +63,39 @@ namespace glm namespace core{ namespace type{ + ///namespace for precision stuff. namespace precision { //! Low precision signed integer. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification. + //! \ingroup core_precision typedef detail::lowp_int_t lowp_int; //! Medium precision signed integer. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification. + //! \ingroup core_precision typedef detail::mediump_int_t mediump_int; //! High precision signed integer. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification. + //! \ingroup core_precision typedef detail::highp_int_t highp_int; //! Low precision unsigned integer. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification. + //! \ingroup core_precision typedef detail::lowp_uint_t lowp_uint; //! Medium precision unsigned integer. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification. + //! \ingroup core_precision typedef detail::mediump_uint_t mediump_uint; //! High precision unsigned integer. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification. + //! \ingroup core_precision typedef detail::highp_uint_t highp_uint; } //namespace precision diff --git a/glm/core/type_mat2x2.hpp b/glm/core/type_mat2x2.hpp index 692ec5e8..aecd36e0 100644 --- a/glm/core/type_mat2x2.hpp +++ b/glm/core/type_mat2x2.hpp @@ -35,7 +35,8 @@ namespace glm template <typename T> struct tmat4x3; template <typename T> struct tmat4x4; - //!< \brief Template for 2 * 2 matrix of floating-point numbers. + //! \brief Template for 2 * 2 matrix of floating-point numbers. + //! \ingroup core_template template <typename T> struct tmat2x2 { @@ -222,16 +223,19 @@ namespace glm namespace precision { //! 2 columns of 2 components matrix of low precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) + //! \ingroup core_precision typedef detail::tmat2x2<lowp_float> lowp_mat2x2; //! 2 columns of 2 components matrix of medium precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) + //! \ingroup core_precision typedef detail::tmat2x2<mediump_float> mediump_mat2x2; //! 2 columns of 2 components matrix of high precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) + //! \ingroup core_precision typedef detail::tmat2x2<highp_float> highp_mat2x2; } //namespace precision diff --git a/glm/core/type_mat2x3.hpp b/glm/core/type_mat2x3.hpp index 81b14ebf..647d1ebe 100644 --- a/glm/core/type_mat2x3.hpp +++ b/glm/core/type_mat2x3.hpp @@ -35,7 +35,8 @@ namespace glm template <typename T> struct tmat4x3; template <typename T> struct tmat4x4; - //!< \brief Template for 2 columns and 3 rows matrix of floating-point numbers. + //! \brief Template for 2 columns and 3 rows matrix of floating-point numbers. + //! \ingroup core_template template <typename T> struct tmat2x3 { @@ -189,16 +190,19 @@ namespace glm namespace precision { //! 2 columns of 3 components matrix of low precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) + //! \ingroup core_precision typedef detail::tmat2x3<lowp_float> lowp_mat2x3; //! 2 columns of 3 components matrix of medium precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) + //! \ingroup core_precision typedef detail::tmat2x3<mediump_float> mediump_mat2x3; //! 2 columns of 3 components matrix of high precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) + //! \ingroup core_precision typedef detail::tmat2x3<highp_float> highp_mat2x3; } //namespace precision diff --git a/glm/core/type_mat2x4.hpp b/glm/core/type_mat2x4.hpp index 5b16b082..e0c00ffb 100644 --- a/glm/core/type_mat2x4.hpp +++ b/glm/core/type_mat2x4.hpp @@ -35,7 +35,8 @@ namespace glm template <typename T> struct tmat4x3; template <typename T> struct tmat4x4; - //!< \brief Template for 2 columns and 4 rows matrix of floating-point numbers. + //! Template for 2 columns and 4 rows matrix of floating-point numbers. + //! \ingroup core_template template <typename T> struct tmat2x4 { @@ -189,15 +190,15 @@ namespace glm namespace precision { //! 2 columns of 4 components matrix of low precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) typedef detail::tmat2x4<lowp_float> lowp_mat2x4; //! 2 columns of 4 components matrix of medium precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) typedef detail::tmat2x4<mediump_float> mediump_mat2x4; //! 2 columns of 4 components matrix of high precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) typedef detail::tmat2x4<highp_float> highp_mat2x4; } diff --git a/glm/core/type_mat3x2.hpp b/glm/core/type_mat3x2.hpp index 2fc42c52..5a2bd8f0 100644 --- a/glm/core/type_mat3x2.hpp +++ b/glm/core/type_mat3x2.hpp @@ -35,7 +35,8 @@ namespace glm template <typename T> struct tmat4x3; template <typename T> struct tmat4x4; - //!< \brief Template for 3 columns and 2 rows matrix of floating-point numbers. + //! \brief Template for 3 columns and 2 rows matrix of floating-point numbers. + //! \ingroup core_template template <typename T> struct tmat3x2 { @@ -191,15 +192,15 @@ namespace glm namespace precision { //! 3 columns of 2 components matrix of low precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) typedef detail::tmat3x2<lowp_float> lowp_mat3x2; //! 3 columns of 2 components matrix of medium precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) typedef detail::tmat3x2<mediump_float> mediump_mat3x2; //! 3 columns of 2 components matrix of high precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) typedef detail::tmat3x2<highp_float> highp_mat3x2; } diff --git a/glm/core/type_mat3x3.hpp b/glm/core/type_mat3x3.hpp index 30a12676..e5edfaff 100644 --- a/glm/core/type_mat3x3.hpp +++ b/glm/core/type_mat3x3.hpp @@ -35,7 +35,8 @@ namespace glm template <typename T> struct tmat4x3; template <typename T> struct tmat4x4; - //!< \brief Template for 3 * 3 matrix of floating-point numbers. + //! \brief Template for 3 * 3 matrix of floating-point numbers. + //! \ingroup core_template template <typename T> struct tmat3x3 { @@ -221,16 +222,19 @@ namespace glm namespace precision { //! 3 columns of 3 components matrix of low precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) + //! \ingroup core_precision typedef detail::tmat3x3<lowp_float> lowp_mat3x3; //! 3 columns of 3 components matrix of medium precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) + //! \ingroup core_precision typedef detail::tmat3x3<mediump_float> mediump_mat3x3; //! 3 columns of 3 components matrix of high precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) + //! \ingroup core_precision typedef detail::tmat3x3<highp_float> highp_mat3x3; } //namespace precision diff --git a/glm/core/type_mat3x4.hpp b/glm/core/type_mat3x4.hpp index 03b7e5f2..6f68b4cd 100644 --- a/glm/core/type_mat3x4.hpp +++ b/glm/core/type_mat3x4.hpp @@ -35,7 +35,8 @@ namespace glm template <typename T> struct tmat4x3; template <typename T> struct tmat4x4; - //!< \brief Template for 3 columns and 4 rows matrix of floating-point numbers. + //! \brief Template for 3 columns and 4 rows matrix of floating-point numbers. + //! \ingroup core_template template <typename T> struct tmat3x4 { @@ -191,15 +192,15 @@ namespace glm namespace precision { //! 3 columns of 4 components matrix of low precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) typedef detail::tmat3x4<lowp_float> lowp_mat3x4; //! 3 columns of 4 components matrix of medium precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) typedef detail::tmat3x4<mediump_float> mediump_mat3x4; //! 3 columns of 4 components matrix of high precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) typedef detail::tmat3x4<highp_float> highp_mat3x4; } diff --git a/glm/core/type_mat4x2.hpp b/glm/core/type_mat4x2.hpp index a705d127..3d90e3ac 100644 --- a/glm/core/type_mat4x2.hpp +++ b/glm/core/type_mat4x2.hpp @@ -35,7 +35,8 @@ namespace glm template <typename T> struct tmat4x3; template <typename T> struct tmat4x4; - //!< \brief Template for 4 columns and 2 rows matrix of floating-point numbers. + //! \brief Template for 4 columns and 2 rows matrix of floating-point numbers. + //! \ingroup core_template template <typename T> struct tmat4x2 { @@ -193,16 +194,19 @@ namespace glm namespace precision { //! 4 columns of 2 components matrix of low precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) + //! \ingroup core_precision typedef detail::tmat4x2<lowp_float> lowp_mat4x2; //! 4 columns of 2 components matrix of medium precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) + //! \ingroup core_precision typedef detail::tmat4x2<mediump_float> mediump_mat4x2; //! 4 columns of 2 components matrix of high precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) + //! \ingroup core_precision typedef detail::tmat4x2<highp_float> highp_mat4x2; } //namespace precision diff --git a/glm/core/type_mat4x3.hpp b/glm/core/type_mat4x3.hpp index 2fb7bcef..d9a311ad 100644 --- a/glm/core/type_mat4x3.hpp +++ b/glm/core/type_mat4x3.hpp @@ -35,7 +35,8 @@ namespace glm template <typename T> struct tmat4x3; template <typename T> struct tmat4x4; - //!< \brief Template for 4 columns and 3 rows matrix of floating-point numbers. + //! \brief Template for 4 columns and 3 rows matrix of floating-point numbers. + //! \ingroup core_template template <typename T> struct tmat4x3 { @@ -193,16 +194,19 @@ namespace glm namespace precision { //! 4 columns of 3 components matrix of low precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) + //! \ingroup core_precision typedef detail::tmat4x3<lowp_float> lowp_mat4x3; //! 4 columns of 3 components matrix of medium precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) + //! \ingroup core_precision typedef detail::tmat4x3<mediump_float> mediump_mat4x3; //! 4 columns of 3 components matrix of high precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) + //! \ingroup core_precision typedef detail::tmat4x3<highp_float> highp_mat4x3; } //namespace precision diff --git a/glm/core/type_mat4x4.hpp b/glm/core/type_mat4x4.hpp index 47ca4a91..05325a1e 100644 --- a/glm/core/type_mat4x4.hpp +++ b/glm/core/type_mat4x4.hpp @@ -35,7 +35,8 @@ namespace glm template <typename T> struct tmat4x3; template <typename T> struct tmat4x4; - //!< \brief Template for 4 * 4 matrix of floating-point numbers. + //! \brief Template for 4 * 4 matrix of floating-point numbers. + //! \ingroup core_template template <typename T> struct tmat4x4 { @@ -221,16 +222,19 @@ namespace glm namespace precision { //! 4 columns of 4 components matrix of low precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) + //! \ingroup core_precision typedef detail::tmat4x4<lowp_float> lowp_mat4x4; //! 4 columns of 4 components matrix of medium precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) + //! \ingroup core_precision typedef detail::tmat4x4<mediump_float> mediump_mat4x4; //! 4 columns of 4 components matrix of high precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers) + //! \ingroup core_precision typedef detail::tmat4x4<highp_float> highp_mat4x4; } //namespace precision diff --git a/glm/core/type_vec2.hpp b/glm/core/type_vec2.hpp index 91cdbc69..3e212c88 100644 --- a/glm/core/type_vec2.hpp +++ b/glm/core/type_vec2.hpp @@ -32,6 +32,8 @@ namespace glm template <typename T> struct tvec3; template <typename T> struct tvec4; + //! The basic 2D vector type. + //! \ingroup core_template template <typename T> struct tvec2 { @@ -203,42 +205,51 @@ namespace glm namespace precision { //! 2 components vector of high precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec2<highp_float> highp_vec2; //! 2 components vector of medium precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec2<mediump_float> mediump_vec2; //! 2 components vector of low precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec2<lowp_float> lowp_vec2; //! 2 components vector of high precision signed integer numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec2<highp_int> highp_ivec2; //! 2 components vector of medium precision signed integer numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec2<mediump_int> mediump_ivec2; //! 2 components vector of low precision signed integer numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec2<lowp_int> lowp_ivec2; //! 2 components vector of high precision unsigned integer numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec2<highp_uint> highp_uvec2; //! 2 components vector of medium precision unsigned integer numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec2<mediump_uint> mediump_uvec2; //! 2 components vector of low precision unsigned integer numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec2<lowp_uint> lowp_uvec2; } //namespace precision diff --git a/glm/core/type_vec3.hpp b/glm/core/type_vec3.hpp index 2a3025db..189950ab 100644 --- a/glm/core/type_vec3.hpp +++ b/glm/core/type_vec3.hpp @@ -31,6 +31,8 @@ namespace glm template <typename T> struct tvec2; template <typename T> struct tvec4; + //! Basic 3D vector type. + //! \ingroup core_template template <typename T> struct tvec3 { @@ -208,42 +210,51 @@ namespace glm namespace precision { //! 3 components vector of high precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec3<highp_float> highp_vec3; //! 3 components vector of medium precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec3<mediump_float> mediump_vec3; //! 3 components vector of low precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec3<lowp_float> lowp_vec3; //! 3 components vector of high precision signed integer numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec3<highp_int> highp_ivec3; //! 3 components vector of medium precision signed integer numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec3<mediump_int> mediump_ivec3; //! 3 components vector of low precision signed integer numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec3<lowp_int> lowp_ivec3; //! 3 components vector of high precision unsigned integer numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec3<highp_uint> highp_uvec3; //! 3 components vector of medium precision unsigned integer numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec3<mediump_uint> mediump_uvec3; //! 3 components vector of low precision unsigned integer numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec3<lowp_uint> lowp_uvec3; } //namespace precision diff --git a/glm/core/type_vec4.hpp b/glm/core/type_vec4.hpp index 02d88817..803bf685 100644 --- a/glm/core/type_vec4.hpp +++ b/glm/core/type_vec4.hpp @@ -32,6 +32,8 @@ namespace glm template <typename T> struct tvec2; template <typename T> struct tvec3; + ///Basic 4D vector type. + //! \ingroup core_template template <typename T> struct tvec4 { @@ -225,42 +227,51 @@ namespace glm namespace precision { //! 4 components vector of high precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec4<highp_float> highp_vec4; //! 4 components vector of medium precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec4<mediump_float> mediump_vec4; //! 4 components vector of low precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec4<lowp_float> lowp_vec4; //! 4 components vector of high precision signed integer numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec4<highp_int> highp_ivec4; //! 4 components vector of medium precision signed integer numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec4<mediump_int> mediump_ivec4; //! 4 components vector of low precision signed integer numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec4<lowp_int> lowp_ivec4; //! 4 components vector of high precision unsigned integer numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec4<highp_uint> highp_uvec4; //! 4 components vector of medium precision unsigned integer numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec4<mediump_uint> mediump_uvec4; //! 4 components vector of low precision unsigned integer numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers. + //! \ingroup core_precision typedef detail::tvec4<lowp_uint> lowp_uvec4; } //namespace precision diff --git a/glm/glm.hpp b/glm/glm.hpp index 0dc9b3e5..c18da216 100644 --- a/glm/glm.hpp +++ b/glm/glm.hpp @@ -7,26 +7,6 @@ // File : glm/glm.hpp /////////////////////////////////////////////////////////////////////////////////////////////////// -/*! \mainpage OpenGL Mathematics - * - * OpenGL Mathematics (GLM) is a C++ mathematics library for 3D applications based on the OpenGL Shading Language (GLSL) specification. - * - * GLM provides 3D programmers with math classes and functions that are similar to GLSL or any high level GPU programming language. The idea is to have a library that has identical naming conventions and functionalities than GLSL so that when developers know GLSL, they know how to use GLM. - * - * However, this project isn't limited by GLSL features. An extension system, based on the GLSL extension conventions, allows extended capabilities. - * - * This library can be used with OpenGL but also for software rendering (Raytracing / Rasterisation), image processing and as much contexts as a simple math library could be used for. - * - * GLM is written as a platform independent library and supports the following compilers: - * - GNU GCC 3.4 and higher - * - Microsoft Visual Studio 8.0 and higher - * - * The source code is under the MIT licence. - * - * Any feedback is welcome and can be sent to glm@g-truc.net. - * - */ - #ifndef glm_glm #define glm_glm diff --git a/glm/gtc/half_float.hpp b/glm/gtc/half_float.hpp index 1d78d995..9c9d81e1 100644 --- a/glm/gtc/half_float.hpp +++ b/glm/gtc/half_float.hpp @@ -326,6 +326,9 @@ namespace glm //! GLM_GTC_half_float extension: Add support for half precision floating-point types namespace half_float { + /// \addtogroup gtc_half_float + ///@{ + //! Type for half-precision floating-point numbers. //! From GLM_GTC_half_float extension. typedef detail::thalf half; @@ -354,6 +357,8 @@ namespace glm //! From GLM_GTC_half_float extension. typedef detail::tmat4x4<detail::thalf> hmat4; + ///@} + }//namespace half_float }//namespace gtc }//namespace glm diff --git a/glm/gtc/matrix_access.hpp b/glm/gtc/matrix_access.hpp index 28fe3fa2..d5c54655 100644 --- a/glm/gtc/matrix_access.hpp +++ b/glm/gtc/matrix_access.hpp @@ -25,6 +25,9 @@ namespace gtc{ //! GLM_GTC_matrix_access extension: Set a column or a row of a matrix namespace matrix_access { + /// \addtogroup gtc_matrix_access + ///@{ + //! Get a specific row of a matrix. //! From GLM_GTC_matrix_access extension. template <typename genType> @@ -55,6 +58,8 @@ namespace matrix_access int index, typename genType::col_type const & x); + ///@} + }//namespace matrix_access }//namespace gtc }//namespace glm diff --git a/glm/gtc/matrix_integer.hpp b/glm/gtc/matrix_integer.hpp index 9c1c455c..079dafc8 100644 --- a/glm/gtc/matrix_integer.hpp +++ b/glm/gtc/matrix_integer.hpp @@ -30,6 +30,9 @@ namespace glm //! GLM_GTC_matrix_integer extension: Add integer matrices namespace matrix_integer { + /// \addtogroup gtc_matrix_integer + ///@{ + typedef detail::tmat2x2<highp_int> highp_imat2; //!< \brief High-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension) typedef detail::tmat3x3<highp_int> highp_imat3; //!< \brief High-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension) typedef detail::tmat4x4<highp_int> highp_imat4; //!< \brief High-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension) @@ -201,6 +204,8 @@ namespace glm typedef mediump_umat4x4 umat4x4; //!< \brief Unsigned integer 4x4 matrix. (from GLM_GTC_matrix_integer extension) #endif//GLM_PRECISION + ///@} + }//namespace matrix_integer }//namespace gtc }//namespace glm diff --git a/glm/gtc/matrix_inverse.hpp b/glm/gtc/matrix_inverse.hpp index c2c6ecfd..32fac849 100644 --- a/glm/gtc/matrix_inverse.hpp +++ b/glm/gtc/matrix_inverse.hpp @@ -25,6 +25,9 @@ namespace gtc{ //! GLM_GTC_matrix_inverse extension: Inverse matrix functions namespace matrix_inverse { + /// \addtogroup gtc_matrix_inverse + ///@{ + //! Fast matrix inverse for affine matrix. //! From GLM_GTC_matrix_inverse extension. template <typename genType> @@ -36,6 +39,8 @@ namespace matrix_inverse inline typename genType::value_type inverseTranspose( genType const & m); + ///@} + }//namespace matrix_inverse }//namespace gtc }//namespace glm diff --git a/glm/gtc/matrix_transform.hpp b/glm/gtc/matrix_transform.hpp index 477dc2eb..55c244a4 100644 --- a/glm/gtc/matrix_transform.hpp +++ b/glm/gtc/matrix_transform.hpp @@ -31,6 +31,9 @@ namespace glm //! GLM_GTC_matrix_transform extension: Add transformation matrices namespace matrix_transform { + /// \addtogroup gtc_matrix_transform + ///@{ + //! Builds a translation 4 * 4 matrix created from a vector of 3 components. //! From GLM_GTC_matrix_transform extension. template <typename T> @@ -141,6 +144,7 @@ namespace glm detail::tvec3<T> const & center, detail::tvec3<T> const & up); + ///@} }//namespace matrix_transform }//namespace gtc }//namespace glm diff --git a/glm/gtc/quaternion.hpp b/glm/gtc/quaternion.hpp index ed57141f..6d068a09 100644 --- a/glm/gtc/quaternion.hpp +++ b/glm/gtc/quaternion.hpp @@ -36,6 +36,7 @@ namespace glm { //! \brief Template for quaternion. //! From GLM_GTC_quaternion extension. + /// \ingroup gtc_quaternion template <typename T> struct tquat// : public genType<T, tquat> { @@ -119,6 +120,9 @@ namespace glm //! GLM_GTC_quaternion extension: Quaternion types and functions namespace quaternion { + /// \addtogroup gtc_quaternion + ///@{ + //! Returns the length of the quaternion x. //! From GLM_GTC_quaternion extension. template <typename T> @@ -213,6 +217,8 @@ namespace glm //! From GLM_GTC_quaternion extension. typedef detail::tquat<double> dquat; + ///@} + }//namespace quaternion }//namespace gtc } //namespace glm diff --git a/glm/gtc/type_precision.hpp b/glm/gtc/type_precision.hpp index 5c51f280..ab307277 100644 --- a/glm/gtc/type_precision.hpp +++ b/glm/gtc/type_precision.hpp @@ -43,6 +43,9 @@ namespace glm /////////////////////////// // Signed int vector types + /// \addtogroup gtc_type_precision + ///@{ + typedef detail::int8 int8; //!< \brief 8bit signed integer. (from GLM_GTC_type_precision extension) typedef detail::int16 int16; //!< \brief 16bit signed integer. (from GLM_GTC_type_precision extension) typedef detail::int32 int32; //!< \brief 32bit signed integer. (from GLM_GTC_type_precision extension) @@ -210,6 +213,8 @@ namespace glm typedef detail::tquat<f32> f32quat; //!< \brief Single-precision floating-point quaternion. (from GLM_GTC_type_precision extension) typedef detail::tquat<f64> f64quat; //!< \brief Double-precision floating-point quaternion. (from GLM_GTC_type_precision extension) + ///@} + }//namespace type_precision }//namespace gtc }//namespace glm diff --git a/glm/gtc/type_ptr.hpp b/glm/gtc/type_ptr.hpp index 887fcdfc..5aeea5af 100644 --- a/glm/gtc/type_ptr.hpp +++ b/glm/gtc/type_ptr.hpp @@ -30,6 +30,9 @@ namespace glm //! GLM_GTC_type_ptr extension: Get access to vectors & matrices value type address. namespace type_ptr{ + /// \addtogroup gtc_type_ptr + ///@{ + //! Get the const address of the vector content. //! From GLM_GTC_type_ptr extension. template<typename T> @@ -291,6 +294,8 @@ namespace glm return &(mat[0].x); } + ///@} + }//namespace type_ptr }//namespace gtc }//namespace glm diff --git a/glm/gtx/associated_min_max.hpp b/glm/gtx/associated_min_max.hpp index 285be5e7..15c74c34 100644 --- a/glm/gtx/associated_min_max.hpp +++ b/glm/gtx/associated_min_max.hpp @@ -32,6 +32,9 @@ namespace glm //! GLM_GTX_associated_min_max extension: Min and max functions that return associated values not the compared onces. namespace associated_min_max { + /// \addtogroup gtx_associated_min_max + ///@{ + //! \brief Min comparison between 2 variables template<typename genTypeT, typename genTypeU> genTypeU associatedMin( @@ -73,6 +76,7 @@ namespace glm const genTypeT& y, const genTypeU& b, const genTypeT& z, const genTypeU& c, const genTypeT& w, const genTypeU& d); + ///@} }//namespace associated_min_max diff --git a/glm/gtx/bit.hpp b/glm/gtx/bit.hpp index d011f7dd..240502c4 100644 --- a/glm/gtx/bit.hpp +++ b/glm/gtx/bit.hpp @@ -34,6 +34,8 @@ namespace glm { using namespace gtc::half_float; + /// \addtogroup gtx_bit + ///@{ //! Build a mask of 'count' bits //! From GLM_GTX_bit extension. template <typename genIType> @@ -97,6 +99,7 @@ namespace glm //! From GLM_GTX_bit extension. template <typename genType> genType bitRotateLeft(genType const & In, std::size_t Shift); + ///@} }//namespace bit }//namespace gtx diff --git a/glm/gtx/closest_point.hpp b/glm/gtx/closest_point.hpp index 7e2da8f0..7e74927a 100644 --- a/glm/gtx/closest_point.hpp +++ b/glm/gtx/closest_point.hpp @@ -30,6 +30,9 @@ namespace glm //! GLM_GTX_closest_point extension: Find the point on a straight line which is the closet of a point. namespace closest_point{ + /// \addtogroup gtx_closest_point + ///@{ + //! Find the point on a straight line which is the closet of a point. //! From GLM_GTX_closest_point extension. template <typename T> @@ -37,6 +40,7 @@ namespace glm detail::tvec3<T> const & point, detail::tvec3<T> const & a, detail::tvec3<T> const & b); + ///@} }//namespace closest_point }//namespace gtx diff --git a/glm/gtx/color_cast.hpp b/glm/gtx/color_cast.hpp index 0052be9e..0dc4e720 100644 --- a/glm/gtx/color_cast.hpp +++ b/glm/gtx/color_cast.hpp @@ -34,6 +34,9 @@ namespace glm { using namespace gtx::number_precision; + /// \addtogroup gtx_color_cast + ///@{ + //! Conversion of a floating value into a 8bit unsigned int value. //! From GLM_GTX_color_cast extension. template <typename valType> gtc::type_precision::uint8 u8channel_cast(valType a); @@ -97,6 +100,8 @@ namespace glm template <typename T> gtc::type_precision::f64vec4 f64_argb_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension) template <typename T> gtc::type_precision::f64vec4 f64_bgra_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension) template <typename T> gtc::type_precision::f64vec4 f64_abgr_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension) + + ///@} }//namespace color_space }//namespace gtx }//namespace glm diff --git a/glm/gtx/color_space.hpp b/glm/gtx/color_space.hpp index 081d9adf..b754d731 100644 --- a/glm/gtx/color_space.hpp +++ b/glm/gtx/color_space.hpp @@ -30,6 +30,9 @@ namespace glm //! GLM_GTX_color_space extension: Related to RGB to HSV conversions and operations namespace color_space { + /// \addtogroup gtx_color_space + ///@{ + //! Converts a color from HSV color space to its color in RGB color space. //! From GLM_GTX_color_space extension. template <typename valType> @@ -67,6 +70,8 @@ namespace glm template <typename valType> valType luminosity( detail::tvec3<valType> const & color); + + ///@} }//namespace color_space }//namespace gtx diff --git a/glm/gtx/color_space_YCoCg.hpp b/glm/gtx/color_space_YCoCg.hpp index 5161aab5..ca93986d 100644 --- a/glm/gtx/color_space_YCoCg.hpp +++ b/glm/gtx/color_space_YCoCg.hpp @@ -30,6 +30,9 @@ namespace glm //! GLM_GTX_color_space_YCoCg extension: RGB to YCoCg conversions and operations namespace color_space_YCoCg { + /// \addtogroup gtx_color_space_YCoCg + ///@{ + //! Convert a color from RGB color space to YCoCg color space. //! From GLM_GTX_color_space_YCoCg extension. template <typename valType> @@ -56,6 +59,7 @@ namespace glm detail::tvec3<valType> YCoCgR2rgb( detail::tvec3<valType> const & YCoCgColor); + ///@} }//namespace color_space_YCoCg }//namespace gtx }//namespace glm diff --git a/glm/gtx/compatibility.hpp b/glm/gtx/compatibility.hpp index 0e4487f2..8f901aca 100644 --- a/glm/gtx/compatibility.hpp +++ b/glm/gtx/compatibility.hpp @@ -38,6 +38,9 @@ namespace glm //! GLM_GTX_compatibility extension: Provide functions to increase the compatibility with Cg and HLSL languages namespace compatibility { + /// \addtogroup gtx_compatibility + ///@{ + template <typename T> inline T lerp(T x, T y, T a){return mix(x, y, a);} //!< \brief Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility) 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);} //!< \brief Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility) 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);} //!< \brief Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility) @@ -151,6 +154,8 @@ namespace glm typedef detail::tmat4x3<double> double4x3; //!< \brief double-precision floating-point matrix with 4 x 3 components. (From GLM_GTX_compatibility extension) typedef detail::tmat4x4<double> double4x4; //!< \brief double-precision floating-point matrix with 4 x 4 components. (From GLM_GTX_compatibility extension) + ///@} + }//namespace compatibility }//namespace gtx }//namespace glm diff --git a/glm/gtx/component_wise.hpp b/glm/gtx/component_wise.hpp index 612d5948..f9cd362b 100644 --- a/glm/gtx/component_wise.hpp +++ b/glm/gtx/component_wise.hpp @@ -30,6 +30,9 @@ namespace glm //! GLM_GTX_component_wise extension: Operations between components of a type namespace component_wise { + /// \addtogroup gtx_component_wise + ///@{ + //! Add all vector components together. //! From GLM_GTX_component_wise extension. template <typename genType> @@ -54,6 +57,8 @@ namespace glm typename genType::value_type compMax( genType const & v); + ///@} + }//namespace component_wise }//namespace gtx }//namespace glm diff --git a/glm/gtx/epsilon.hpp b/glm/gtx/epsilon.hpp index 35e55170..f362edc1 100644 --- a/glm/gtx/epsilon.hpp +++ b/glm/gtx/epsilon.hpp @@ -29,9 +29,12 @@ namespace glm }//namespace test namespace gtx{ - //! GLM_GTX_epsilon extension: Comparaison functions for a user defined epsilon values. + //! GLM_GTX_epsilon extension: Comparison functions for a user defined epsilon values. namespace epsilon { + /// \addtogroup gtx_epsilon + ///@{ + //! Returns the component-wise compare of |x - y| < epsilon. //! From GLM_GTX_epsilon extension. template <typename genTypeT, typename genTypeU> @@ -48,6 +51,8 @@ namespace glm genTypeT const & y, genTypeU const & epsilon); + ///@} + }//namespace epsilon }//namespace gtx }//namespace glm diff --git a/glm/gtx/euler_angles.hpp b/glm/gtx/euler_angles.hpp index df7dc994..d16ba5e6 100644 --- a/glm/gtx/euler_angles.hpp +++ b/glm/gtx/euler_angles.hpp @@ -29,9 +29,12 @@ namespace glm { namespace gtx{ - //! GLM_GTX_euler_angles extension: Build matrices from euler angles. + //! GLM_GTX_euler_angles extension: Build matrices from Euler angles. namespace euler_angles { + /// \addtogroup gtx_euler_angles + ///@{ + //! Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle X. //! From GLM_GTX_euler_angles extension. template <typename valType> @@ -127,6 +130,8 @@ namespace glm //! From GLM_GTX_euler_angles extension. template <typename T> detail::tmat4x4<T> orientate4(detail::tvec3<T> const & angles); + + ///@} }//namespace euler_angles }//namespace gtx }//namespace glm diff --git a/glm/gtx/extend.hpp b/glm/gtx/extend.hpp index cba75953..9bda8cd1 100644 --- a/glm/gtx/extend.hpp +++ b/glm/gtx/extend.hpp @@ -30,6 +30,9 @@ namespace glm //! GLM_GTX_extend extension: Extend a position from a source to a position at a defined length. namespace extend { + /// \addtogroup gtx_extend + ///@{ + //! Extends of Length the Origin position using the (Source - Origin) direction. //! From GLM_GTX_extend extension. template <typename genType> @@ -38,6 +41,8 @@ namespace glm genType const & Source, typename genType::value_type const Length); + ///@} + }//namespace extend }//namespace gtx }//namespace glm diff --git a/glm/gtx/extented_min_max.hpp b/glm/gtx/extented_min_max.hpp index 6953be39..bf496576 100644 --- a/glm/gtx/extented_min_max.hpp +++ b/glm/gtx/extented_min_max.hpp @@ -32,6 +32,9 @@ namespace glm //! GLM_GTX_extented_min_max extension: Min and max functions for 3 to 4 parameters. namespace extented_min_max { + /// \addtogroup gtx_extented_min_max + ///@{ + //< Return the minimum component-wise values of 3 inputs //< From GLM_GTX_extented_min_max extension template <typename T> @@ -166,6 +169,8 @@ namespace glm C<T> const & z, C<T> const & w); + ///@} + }//namespace extented_min_max }//namespace gtx }//namespace glm diff --git a/glm/gtx/fast_exponential.hpp b/glm/gtx/fast_exponential.hpp index 64ac5c3a..cc4c75ca 100644 --- a/glm/gtx/fast_exponential.hpp +++ b/glm/gtx/fast_exponential.hpp @@ -33,6 +33,8 @@ namespace glm namespace fast_exponential { using namespace gtc::half_float; + /// \addtogroup gtx_fast_exponential + ///@{ //! Faster than the common pow function but less accurate. //! From GLM_GTX_fast_exponential extension. @@ -73,6 +75,8 @@ namespace glm template <typename T> T fastLn(const T& x); + ///@} + }//namespace fast_exponential }//namespace gtx }//namespace glm diff --git a/glm/gtx/fast_square_root.hpp b/glm/gtx/fast_square_root.hpp index 66b7ec23..863cb6b3 100644 --- a/glm/gtx/fast_square_root.hpp +++ b/glm/gtx/fast_square_root.hpp @@ -34,6 +34,9 @@ namespace glm //! GLM_GTX_fast_square_root extension: Fast but less accurate implementations of square root based functions. namespace fast_square_root { + /// \addtogroup gtx_fast_square_root + ///@{ + //! Faster than the common sqrt function but less accurate. //! From GLM_GTX_fast_square_root extension. template <typename genType> @@ -59,6 +62,8 @@ namespace glm template <typename genType> genType fastNormalize(genType const & x); + ///@} + }//namespace fast_square_root }// namespace gtx }//namespace glm diff --git a/glm/gtx/fast_trigonometry.hpp b/glm/gtx/fast_trigonometry.hpp index 3bf9a906..2b1228bb 100644 --- a/glm/gtx/fast_trigonometry.hpp +++ b/glm/gtx/fast_trigonometry.hpp @@ -30,6 +30,9 @@ namespace glm //! GLM_GTX_fast_trigonometry extension: Fast but less accurate implementations of trigonometric functions. namespace fast_trigonometry { + /// \addtogroup gtx_fast_trigonometry + ///@{ + //! Faster than the common sin function but less accurate. //! Defined between -2pi and 2pi. //! From GLM_GTX_fast_trigonometry extension. @@ -72,6 +75,8 @@ namespace glm template <typename T> T fastAtan(const T& angle); + ///@} + }//namespace fast_trigonometry }//namespace gtx }//namespace glm diff --git a/glm/gtx/handed_coordinate_space.hpp b/glm/gtx/handed_coordinate_space.hpp index b7c13ca5..e159b13f 100644 --- a/glm/gtx/handed_coordinate_space.hpp +++ b/glm/gtx/handed_coordinate_space.hpp @@ -23,9 +23,12 @@ namespace glm { namespace gtx{ - //! GLM_GTX_handed_coordinate_space extension: To know if a triedron is right or left handed + //! GLM_GTX_handed_coordinate_space extension: To know if a set of three basis vectors defines a right or left-handed coordinate system. namespace handed_coordinate_space { + /// \addtogroup gtx_handed_coordinate_space + ///@{ + //! Return if a trihedron right handed or not. //! From GLM_GTX_handed_coordinate_space extension. template <typename T> @@ -42,6 +45,8 @@ namespace glm detail::tvec3<T> const & binormal, detail::tvec3<T> const & normal); + ///@} + }//namespace handed_coordinate_space }//namespace gtx }//namespace glm diff --git a/glm/gtx/inertia.hpp b/glm/gtx/inertia.hpp index 2c29697f..69a81d31 100644 --- a/glm/gtx/inertia.hpp +++ b/glm/gtx/inertia.hpp @@ -26,6 +26,9 @@ namespace glm //! GLM_GTX_inertia extension: Create inertia matrices namespace inertia { + /// \addtogroup gtx_inertia + ///@{ + //! Build an inertia matrix for a box. //! From GLM_GTX_inertia extension. template <typename T> @@ -82,6 +85,8 @@ namespace glm const T Mass, const T Radius); + ///@} + }//namespace inertia }//namespace gtx }//namespace glm diff --git a/glm/gtx/int_10_10_10_2.hpp b/glm/gtx/int_10_10_10_2.hpp index 38c2c736..ca1e50b4 100644 --- a/glm/gtx/int_10_10_10_2.hpp +++ b/glm/gtx/int_10_10_10_2.hpp @@ -29,10 +29,15 @@ namespace glm { using namespace gtx::raw_data; + /// \addtogroup gtx_int_10_10_10_2 + ///@{ + //! From GLM_GTX_int_10_10_10_2 extension. //! Cast a vec4 to an u_10_10_10_2. dword uint10_10_10_2_cast(glm::vec4 const & v); + ///@} + }//namespace integer }//namespace gtx }//namespace glm diff --git a/glm/gtx/integer.hpp b/glm/gtx/integer.hpp index 7afb1623..e60b936c 100644 --- a/glm/gtx/integer.hpp +++ b/glm/gtx/integer.hpp @@ -26,6 +26,9 @@ namespace glm //! GLM_GTX_integer extension: Add support for integer for core functions namespace integer { + /// \addtogroup gtx_integer + ///@{ + //! Returns x raised to the y power. //! From GLM_GTX_integer extension. int pow(int x, int y); @@ -43,6 +46,8 @@ namespace glm template <typename genType> genType factorial(genType const & x); + ///@} + }//namespace integer }//namespace gtx }//namespace glm diff --git a/glm/gtx/intersect.hpp b/glm/gtx/intersect.hpp index 5da484aa..c473a83e 100644 --- a/glm/gtx/intersect.hpp +++ b/glm/gtx/intersect.hpp @@ -32,7 +32,10 @@ namespace glm //! GLM_GTX_intersect extension: Add intersection functions namespace intersect { - //! Compute the intersection of a ray and a triangle. + /// \addtogroup gtx_intersect + ///@{ + + //! Compute the intersection of a ray and a triangle. //! From GLM_GTX_intersect extension. template <typename genType> bool intersectRayTriangle( @@ -64,6 +67,8 @@ namespace glm genType const & center, typename genType::value_type radius, genType & position, genType & normal); + ///@} + }//namespace intersect }//namespace gtx }//namespace glm diff --git a/glm/gtx/log_base.hpp b/glm/gtx/log_base.hpp index 8002cb35..bf7b5eea 100644 --- a/glm/gtx/log_base.hpp +++ b/glm/gtx/log_base.hpp @@ -30,6 +30,9 @@ namespace glm //! GLM_GTX_log_base extension: Logarithm for any base. base can be a vector or a scalar. namespace log_base { + /// \addtogroup gtx_log_base + ///@{ + //! Logarithm for any base. //! From GLM_GTX_log_base. template <typename genType> @@ -37,6 +40,8 @@ namespace glm genType const & x, genType const & base); + ///@} + }//namespace extend }//namespace gtx }//namespace glm diff --git a/glm/gtx/matrix_cross_product.hpp b/glm/gtx/matrix_cross_product.hpp index 91245c79..2ccdd6b1 100644 --- a/glm/gtx/matrix_cross_product.hpp +++ b/glm/gtx/matrix_cross_product.hpp @@ -30,6 +30,9 @@ namespace glm //! GLM_GTX_matrix_cross_product: Build cross product matrices namespace matrix_cross_product { + /// \addtogroup gtx_matrix_cross_product + ///@{ + //! Build a cross product matrix. //! From GLM_GTX_matrix_cross_product extension. template <typename T> @@ -42,6 +45,8 @@ namespace glm detail::tmat4x4<T> matrixCross4( detail::tvec3<T> const & x); + ///@} + }//namespace matrix_cross_product }//namespace gtx }//namespace glm diff --git a/glm/gtx/matrix_major_storage.hpp b/glm/gtx/matrix_major_storage.hpp index 11a23500..9746e771 100644 --- a/glm/gtx/matrix_major_storage.hpp +++ b/glm/gtx/matrix_major_storage.hpp @@ -23,9 +23,12 @@ namespace glm { namespace gtx{ - //! GLM_GTX_matrix_cross_product: Build matrices with specific matrix order, row or column + //! GLM_GTX_matrix_major_storage: Build matrices with specific matrix order, row or column namespace matrix_major_storage { + /// \addtogroup gtx_matrix_major_storage + ///@{ + //! Build a row major matrix from row vectors. //! From GLM_GTX_matrix_major_storage extension. template <typename T> @@ -109,6 +112,8 @@ namespace glm template <typename T> detail::tmat4x4<T> colMajor4( const detail::tmat4x4<T>& m); + + ///@} }//namespace matrix_major_storage }//namespace gtx diff --git a/glm/gtx/matrix_operation.hpp b/glm/gtx/matrix_operation.hpp index 6c3fa30d..c4834093 100644 --- a/glm/gtx/matrix_operation.hpp +++ b/glm/gtx/matrix_operation.hpp @@ -27,9 +27,12 @@ namespace glm }//namespace test namespace gtx{ - //! GLM_GTX_matrix_operation: Build cross product matrices + //! GLM_GTX_matrix_operation: Build diagonal matrices namespace matrix_operation { + /// \addtogroup gtx_matrix_operation + ///@{ + //! Build a diagonal matrix. //! From GLM_GTX_matrix_operation extension. template <typename valType> @@ -84,6 +87,8 @@ namespace glm detail::tmat4x4<valType> diagonal4x4( detail::tvec4<valType> const & v); + ///@} + }//namespace matrix_operation }//namespace gtx }//namespace glm diff --git a/glm/gtx/matrix_query.hpp b/glm/gtx/matrix_query.hpp index 9dcfec79..222f1f88 100644 --- a/glm/gtx/matrix_query.hpp +++ b/glm/gtx/matrix_query.hpp @@ -27,9 +27,12 @@ namespace glm }//namespace test namespace gtx{ - //! GLM_GTX_matrix_query: Query to evaluate matrices properties + //! GLM_GTX_matrix_query: Query to evaluate matrix properties namespace matrix_query { + /// \addtogroup gtx_matrix_query + ///@{ + //! Return if a matrix a null matrix. //! From GLM_GTX_matrix_query extension. template<typename T> @@ -86,6 +89,7 @@ namespace glm const genType& m, const typename genType::value_type epsilon = std::numeric_limits<typename genType::value_type>::epsilon()); + ///@} }//namespace matrix_query }//namespace gtx }//namespace glm diff --git a/glm/gtx/mixed_product.hpp b/glm/gtx/mixed_product.hpp index ca955c84..cad47e9e 100644 --- a/glm/gtx/mixed_product.hpp +++ b/glm/gtx/mixed_product.hpp @@ -30,12 +30,17 @@ namespace glm //! GLM_GTX_mixed_product extension: Mixed product of 3 vectors. namespace mixed_product { + /// \addtogroup gtx_mixed_product + ///@{ + //! \brief Mixed product of 3 vectors (from GLM_GTX_mixed_product extension) template <typename valType> valType mixedProduct( detail::tvec3<valType> const & v1, detail::tvec3<valType> const & v2, detail::tvec3<valType> const & v3); + + ///@} }//namespace mixed_product }//namespace gtx }//namespace glm diff --git a/glm/gtx/multiple.hpp b/glm/gtx/multiple.hpp index 5c406816..5cf1e855 100644 --- a/glm/gtx/multiple.hpp +++ b/glm/gtx/multiple.hpp @@ -30,6 +30,9 @@ namespace glm //! GLM_GTX_multiple: Find the closest number of a number multiple of other number. namespace multiple { + /// \addtogroup gtx_multiple + ///@{ + //! Higher Multiple number of Source. //! From GLM_GTX_multiple extension. template <typename genType> @@ -44,6 +47,8 @@ namespace glm genType const & Source, genType const & Multiple); + ///@} + }//namespace multiple }//namespace gtx }//namespace glm diff --git a/glm/gtx/norm.hpp b/glm/gtx/norm.hpp index 4384d107..599a3995 100644 --- a/glm/gtx/norm.hpp +++ b/glm/gtx/norm.hpp @@ -32,9 +32,12 @@ namespace glm }//namespace test namespace gtx{ - //! GLM_GTX_norm extension: Varius way to compute vector norms. + //! GLM_GTX_norm extension: Various way to compute vector norms. namespace norm { + /// \addtogroup gtx_norm + ///@{ + //! Returns the squared length of x. //! From GLM_GTX_norm extension. template <typename T> @@ -134,6 +137,8 @@ namespace glm const detail::tvec3<T>& x, unsigned int Depth); + ///@} + }//namespace norm }//namespace gtx }//namespace glm diff --git a/glm/gtx/normal.hpp b/glm/gtx/normal.hpp index 870a8517..8c27798d 100644 --- a/glm/gtx/normal.hpp +++ b/glm/gtx/normal.hpp @@ -30,6 +30,9 @@ namespace glm //! GLM_GTX_normal extension: Compute the normal of a triangle. namespace normal { + /// \addtogroup gtx_normal + ///@{ + //! Computes triangle normal from triangle points. //! From GLM_GTX_normal extension. template <typename T> @@ -38,6 +41,8 @@ namespace glm detail::tvec3<T> const & p2, detail::tvec3<T> const & p3); + ///@} + }//namespace normal }//namespace gtx }//namespace glm diff --git a/glm/gtx/normalize_dot.hpp b/glm/gtx/normalize_dot.hpp index c664717b..4f519698 100644 --- a/glm/gtx/normalize_dot.hpp +++ b/glm/gtx/normalize_dot.hpp @@ -30,6 +30,9 @@ namespace glm { using namespace gtx::fast_square_root; + /// \addtogroup gtx_normalize_dot + ///@{ + //! Normalize parameters and returns the dot product of x and y. //! It's faster that dot(normalize(x), normalize(y)). //! From GLM_GTX_normalize_dot extension. @@ -46,6 +49,8 @@ namespace glm genType const & x, genType const & y); + ///@} + }//namespace normalize_dot }//namespace gtx }//namespace glm diff --git a/glm/gtx/number_precision.hpp b/glm/gtx/number_precision.hpp index 22c6191c..4a4b68cb 100644 --- a/glm/gtx/number_precision.hpp +++ b/glm/gtx/number_precision.hpp @@ -33,6 +33,9 @@ namespace number_precision ///////////////////////////// // Unsigned int vector types + /// \addtogroup gtx_number_precision + ///@{ + typedef u8 u8vec1; //!< \brief 8bit unsigned integer scalar. (from GLM_GTX_number_precision extension) typedef u16 u16vec1; //!< \brief 16bit unsigned integer scalar. (from GLM_GTX_number_precision extension) typedef u32 u32vec1; //!< \brief 32bit unsigned integer scalar. (from GLM_GTX_number_precision extension) @@ -55,6 +58,7 @@ namespace number_precision typedef f64 f64mat1; //!< \brief Double-precision floating-point scalar. (from GLM_GTX_number_precision extension) typedef f64 f64mat1x1; //!< \brief Double-precision floating-point scalar. (from GLM_GTX_number_precision extension) + ///@} }//namespace number_precision }//namespace gtx }//namespace glm diff --git a/glm/gtx/ocl_type.hpp b/glm/gtx/ocl_type.hpp index f3341e9a..8ab15952 100644 --- a/glm/gtx/ocl_type.hpp +++ b/glm/gtx/ocl_type.hpp @@ -28,6 +28,9 @@ namespace ocl_type /////////////////////////// // Scalar types + /// \addtogroup gtx_ocl_type + ///@{ + typedef detail::int8 cl_char; //!< \brief 8bit signed integer. (from GLM_GTX_ocl_type extension) typedef detail::int16 cl_short; //!< \brief 16bit signed integer. (from GLM_GTX_ocl_type extension) typedef detail::int32 cl_int; //!< \brief 32bit signed integer. (from GLM_GTX_ocl_type extension) @@ -96,6 +99,8 @@ namespace ocl_type //typedef detail::tvec4<detail::float16> cl_half4; //!< \brief Half-precision floating-point scalar. (from GLM_GTX_ocl_type extension) typedef detail::tvec4<detail::float32> cl_float4; //!< \brief Single-precision floating-point scalar. (from GLM_GTX_ocl_type extension) + ///@} + }//namespace ocl_type }//namespace gtx }//namespace glm diff --git a/glm/gtx/optimum_pow.hpp b/glm/gtx/optimum_pow.hpp index c9280547..90bd0966 100644 --- a/glm/gtx/optimum_pow.hpp +++ b/glm/gtx/optimum_pow.hpp @@ -27,9 +27,12 @@ namespace glm }//namespace test namespace gtx{ - //! GLM_GTX_optimum_pow extension: Integer exponenciation of power functions. + //! GLM_GTX_optimum_pow extension: Integer exponentiation of power functions. namespace optimum_pow { + /// \addtogroup gtx_optimum_pow + ///@{ + //! Returns x raised to the power of 2. //! From GLM_GTX_optimum_pow extension. template <typename genType> @@ -61,6 +64,8 @@ namespace glm //! From GLM_GTX_optimum_pow extension. detail::tvec4<bool> powOfTwo(const detail::tvec4<int>& x); + ///@} + }//namespace optimum_pow }//namespace gtx }//namespace glm diff --git a/glm/gtx/orthonormalize.hpp b/glm/gtx/orthonormalize.hpp index ef2d85cb..73d8625c 100644 --- a/glm/gtx/orthonormalize.hpp +++ b/glm/gtx/orthonormalize.hpp @@ -30,7 +30,10 @@ namespace glm //! GLM_GTX_orthonormalize extension: Orthonormalize matrices. namespace orthonormalize { - //! Returns the orthonormalized matrix of m. + /// \addtogroup gtx_orthonormalize + ///@{ + + //! Returns the orthonormalized matrix of m. //! From GLM_GTX_orthonormalize extension. template <typename T> detail::tmat3x3<T> orthonormalize( @@ -43,6 +46,8 @@ namespace glm const detail::tvec3<T>& x, const detail::tvec3<T>& y); + ///@} + }//namespace orthonormalize }//namespace gtx }//namespace glm diff --git a/glm/gtx/perpendicular.hpp b/glm/gtx/perpendicular.hpp index e7b950f6..c9212e68 100644 --- a/glm/gtx/perpendicular.hpp +++ b/glm/gtx/perpendicular.hpp @@ -32,7 +32,10 @@ namespace glm //! GLM_GTX_perpendicular extension: Perpendicular of a vector from other one namespace perpendicular { - //! Projects x a perpendicular axis of Normal. + /// \addtogroup gtx_perpendicular + ///@{ + + //! Projects x a perpendicular axis of Normal. //! From GLM_GTX_perpendicular extension. template <typename T> detail::tvec2<T> perp( @@ -52,6 +55,9 @@ namespace glm detail::tvec4<T> perp( detail::tvec4<T> const & x, detail::tvec4<T> const & Normal); + + + ///@} }//namespace perpendicular }//namespace gtx diff --git a/glm/gtx/polar_coordinates.hpp b/glm/gtx/polar_coordinates.hpp index 633d60a7..2387ce66 100644 --- a/glm/gtx/polar_coordinates.hpp +++ b/glm/gtx/polar_coordinates.hpp @@ -26,6 +26,9 @@ namespace glm //! GLM_GTX_polar_coordinates extension: Conversion from Euclidean space to polar space and revert. namespace polar_coordinates { + /// \addtogroup gtx_polar_coordinates + ///@{ + //! Convert Euclidean to Polar coordinates, x is the xz distance, y, the latitude and z the longitude. //! From GLM_GTX_polar_coordinates extension. template <typename T> @@ -36,6 +39,8 @@ namespace glm template <typename T> detail::tvec3<T> euclidean(const detail::tvec3<T>& polar); + ///@} + }//namespace polar_coordinates }//namespace gtx }//namespace glm diff --git a/glm/gtx/projection.hpp b/glm/gtx/projection.hpp index 83401d68..4f4f0dc5 100644 --- a/glm/gtx/projection.hpp +++ b/glm/gtx/projection.hpp @@ -30,6 +30,9 @@ namespace glm //! GLM_GTX_projection extension: Projection of a vector to other one namespace projection { + /// \addtogroup gtx_projection + ///@{ + //! Projects x on Normal. //! From GLM_GTX_projection extension. template <typename T> @@ -50,6 +53,8 @@ namespace glm detail::tvec4<T> proj( detail::tvec4<T> const & x, detail::tvec4<T> const & Normal); + + ///@} }//namespace projection }//namespace gtx diff --git a/glm/gtx/quaternion.hpp b/glm/gtx/quaternion.hpp index b0bda231..91ca1751 100644 --- a/glm/gtx/quaternion.hpp +++ b/glm/gtx/quaternion.hpp @@ -33,7 +33,10 @@ namespace glm { using namespace gtc::quaternion; - //! Compute a cross product between a quaternion and a vector. + /// \addtogroup gtx_quaternion + ///@{ + + //! Compute a cross product between a quaternion and a vector. //! From GLM_GTX_quaternion extension. template <typename valType> detail::tvec3<valType> cross( @@ -188,6 +191,8 @@ namespace glm detail::tquat<valType> toQuat( detail::tmat4x4<valType> const & x){return gtc::quaternion::quat_cast(x);} + ///@} + }//namespace quaternion }//namespace gtx } //namespace glm diff --git a/glm/gtx/random.hpp b/glm/gtx/random.hpp index aa871e20..dad34ddd 100644 --- a/glm/gtx/random.hpp +++ b/glm/gtx/random.hpp @@ -25,9 +25,12 @@ namespace glm{ namespace gtx{ -//! GLM_GTX_random extension: Generate random number from varius distribution methods +//! GLM_GTX_random extension: Generate random number from various distribution methods namespace random { + /// \addtogroup gtx_random + ///@{ + //! Generate a random number in the interval [-1, 1], according a linear distribution. //! From GLM_GTX_random extension. template <typename T> T signedRand1(); @@ -75,6 +78,7 @@ namespace random template <typename T> detail::tvec3<T> gaussRand3(const detail::tvec3<T>& mean, const detail::tvec3<T>& std_deviation); //!< \brief Gererate 3 random floating numbers according a Gauss distribution. (From GLM_GTX_random extension) template <typename T> detail::tvec4<T> gaussRand4(const detail::tvec4<T>& mean, const detail::tvec4<T>& std_deviation); //!< \brief Gererate 4 random floating numbers according a Gauss distribution. (From GLM_GTX_random extension) + ///@} }//namespace random }//namespace gtx }//namespace glm diff --git a/glm/gtx/raw_data.hpp b/glm/gtx/raw_data.hpp index 6e7d3e7a..d0e11757 100644 --- a/glm/gtx/raw_data.hpp +++ b/glm/gtx/raw_data.hpp @@ -29,6 +29,9 @@ namespace gtx { using namespace gtc::type_precision; + /// \addtogroup gtx_raw_data + ///@{ + //! Type for byte numbers. //! From GLM_GTX_raw_data extension. typedef uint8 byte; @@ -44,6 +47,8 @@ namespace gtx //! Type for qword numbers. //! From GLM_GTX_raw_data extension. typedef uint64 qword; + + ///@} } }//namespace gtx }//namespace glm diff --git a/glm/gtx/reciprocal.hpp b/glm/gtx/reciprocal.hpp index 668666a1..27763c22 100644 --- a/glm/gtx/reciprocal.hpp +++ b/glm/gtx/reciprocal.hpp @@ -27,6 +27,9 @@ namespace glm //! GLM_GTX_reciprocal extension: Define secant, cosecant and cotangent functions. namespace reciprocal { + /// \addtogroup gtx_reciprocal + ///@{ + //! Secant function. //! hypotenuse / adjacent or 1 / cos(x) //! From GLM_GTX_reciprocal extension. @@ -90,6 +93,8 @@ namespace glm template <typename genType> genType acoth(genType const & x); + ///@} + }//namespace reciprocal }//namespace gtx }//namespace glm diff --git a/glm/gtx/rotate_vector.hpp b/glm/gtx/rotate_vector.hpp index 618062ba..2b420772 100644 --- a/glm/gtx/rotate_vector.hpp +++ b/glm/gtx/rotate_vector.hpp @@ -29,14 +29,17 @@ namespace glm { using namespace transform; - //! Rotate a two dimentionnals vector. + /// \addtogroup gtx_rotate_vector + ///@{ + + //! Rotate a two dimensional vector. //! From GLM_GTX_rotate_vector extension. template <typename T> detail::tvec2<T> rotate( const detail::tvec2<T>& v, T angle); - //! Rotate a three dimentionnals vector around an axis. + //! Rotate a three dimensional vector around an axis. //! From GLM_GTX_rotate_vector extension. template <typename T> detail::tvec3<T> rotate( @@ -44,28 +47,28 @@ namespace glm T angle, const detail::tvec3<T>& normal); - //! Rotate a four dimentionnals vector around an axis. + //! Rotate a four dimensional vector around an axis. //! From GLM_GTX_rotate_vector extension. template <typename T> detail::tvec4<T> rotate( const detail::tvec4<T>& v, T angle, const detail::tvec3<T>& normal); - //! Rotate a three dimentionnals vector around the X axis. + //! Rotate a three dimensional vector around the X axis. //! From GLM_GTX_rotate_vector extension. template <typename T> detail::tvec3<T> rotateX( const detail::tvec3<T>& v, T angle); - //! Rotate a three dimentionnals vector around the Y axis. + //! Rotate a three dimensional vector around the Y axis. //! From GLM_GTX_rotate_vector extension. template <typename T> detail::tvec3<T> rotateY( const detail::tvec3<T>& v, T angle); - //! Rotate a three dimentionnals vector around the Z axis. + //! Rotate a three dimensional vector around the Z axis. //! From GLM_GTX_rotate_vector extension. template <typename T> detail::tvec3<T> rotateZ( @@ -79,14 +82,14 @@ namespace glm const detail::tvec4<T>& v, T angle); - //! Rotate a four dimentionnals vector around the X axis. + //! Rotate a four dimensional vector around the X axis. //! From GLM_GTX_rotate_vector extension. template <typename T> detail::tvec4<T> rotateY( const detail::tvec4<T>& v, T angle); - //! Rotate a four dimentionnals vector around the X axis. + //! Rotate a four dimensional vector around the X axis. //! From GLM_GTX_rotate_vector extension. template <typename T> detail::tvec4<T> rotateZ( @@ -99,6 +102,8 @@ namespace glm detail::tmat4x4<T> orientation( const detail::tvec3<T>& Normal, const detail::tvec3<T>& Up); + + ///@} }//namespace rotate_vector }//namespace gtx diff --git a/glm/gtx/simd_mat4.hpp b/glm/gtx/simd_mat4.hpp index f48df975..3b9963c1 100644 --- a/glm/gtx/simd_mat4.hpp +++ b/glm/gtx/simd_mat4.hpp @@ -32,6 +32,8 @@ namespace glm { namespace detail { + /// 4x4 Matrix implemented using SIMD SEE intrinsics. + /// \ingroup gtx_simd_mat4 GLM_ALIGN(16) struct fmat4x4SIMD { enum ctor{null}; @@ -129,11 +131,14 @@ namespace glm }//namespace detail namespace gtx{ - //! GLM_GTX_simd_mat4 extension: SIMD implementation of vec4 type. + //! GLM_GTX_simd_mat4 extension: SIMD implementation of mat4 type. namespace simd_mat4 { typedef detail::fmat4x4SIMD simdMat4; + /// \addtogroup gtx_simd_mat4 + ///@{ + //! Convert a simdMat4 to a mat4. //! (From GLM_GTX_simd_mat4 extension) detail::tmat4x4<float> mat4_cast( @@ -169,6 +174,8 @@ namespace glm detail::fmat4x4SIMD simdInverse( detail::fmat4x4SIMD const & m); + ///@} + }//namespace simd_mat4 }//namespace gtx }//namespace glm diff --git a/glm/gtx/simd_vec4.hpp b/glm/gtx/simd_vec4.hpp index 186fd045..efa73220 100644 --- a/glm/gtx/simd_vec4.hpp +++ b/glm/gtx/simd_vec4.hpp @@ -32,6 +32,8 @@ namespace glm { namespace detail { + /// 4-dimensional vector implemented using SIMD SEE intrinsics. + /// \ingroup gtx_simd_vec4 GLM_ALIGN(4) struct fvec4SIMD { enum ctor{null}; @@ -117,6 +119,9 @@ namespace glm { typedef detail::fvec4SIMD simdVec4; + /// \addtogroup gtx_simd_vec4 + ///@{ + //! Convert a simdVec4 to a vec4. //! (From GLM_GTX_simd_vec4 extension) detail::tvec4<float> vec4_cast( @@ -401,6 +406,8 @@ namespace glm detail::fvec4SIMD const & I, detail::fvec4SIMD const & N, float const & eta); + + ///@} }//namespace simd_vec4 }//namespace gtx }//namespace glm diff --git a/glm/gtx/spline.hpp b/glm/gtx/spline.hpp index 60a9f277..d00bf572 100644 --- a/glm/gtx/spline.hpp +++ b/glm/gtx/spline.hpp @@ -29,7 +29,10 @@ namespace glm { using namespace gtx::optimum_pow; - //! Return a point from a catmull rom curve. + /// \addtogroup gtx_spline + ///@{ + + //! Return a point from a catmull rom curve. //! From GLM_GTX_spline extension. template <typename genType> genType catmullRom( @@ -59,6 +62,8 @@ namespace glm const genType& v4, const GLMvalType& s); + ///@} + }//namespace spline }//namespace gtx }//namespace glm diff --git a/glm/gtx/string_cast.hpp b/glm/gtx/string_cast.hpp index 5e47dbfe..565268f6 100644 --- a/glm/gtx/string_cast.hpp +++ b/glm/gtx/string_cast.hpp @@ -43,11 +43,16 @@ namespace glm using namespace gtx::unsigned_int; using namespace gtx::quaternion; + /// \addtogroup gtx_string_cast + ///@{ + //! Create a string from a GLM type value. //! From GLM_GTX_string_cast extension. template <typename genType> std::string to_string(genType const & x); + ///@} + }//namespace string_cast }//namespace gtx }//namespace glm diff --git a/glm/gtx/transform.hpp b/glm/gtx/transform.hpp index fdb7f5e1..adf18639 100644 --- a/glm/gtx/transform.hpp +++ b/glm/gtx/transform.hpp @@ -34,6 +34,9 @@ namespace glm { using namespace gtc::matrix_transform; + /// \addtogroup gtx_transform + ///@{ + //! Builds a translation 4 * 4 matrix created from 3 scalars. //! From GLM_GTX_transform extension. template <typename T> @@ -94,6 +97,8 @@ namespace glm detail::tmat4x4<T> scale( detail::tvec3<T> const & v); + ///@} + }//namespace transform }//namespace gtx }//namespace glm diff --git a/glm/gtx/transform2.hpp b/glm/gtx/transform2.hpp index f24ff729..90b13f29 100644 --- a/glm/gtx/transform2.hpp +++ b/glm/gtx/transform2.hpp @@ -34,6 +34,9 @@ namespace glm { using namespace gtx::transform; + /// \addtogroup gtx_transform2 + ///@{ + //! Transforms a matrix with a shearing on X axis. //! From GLM_GTX_transform2 extension. template <typename T> @@ -109,6 +112,8 @@ namespace glm valType scale, valType bias); + ///@} + }//namespace transform2 }//namespace gtx }//namespace glm diff --git a/glm/gtx/unsigned_int.hpp b/glm/gtx/unsigned_int.hpp index 9f43d94d..a8f210d0 100644 --- a/glm/gtx/unsigned_int.hpp +++ b/glm/gtx/unsigned_int.hpp @@ -34,6 +34,9 @@ namespace glm { using namespace gtx::integer; + /// \addtogroup gtx_unsigned_int + ///@{ + //! 32bit signed integer. //! From GLM_GTX_unsigned_int extension. typedef signed int sint; @@ -50,6 +53,8 @@ namespace glm //! From GLM_GTX_unsigned_int extension. uint mod(uint x, uint y); + ///@} + }//namespace unsigned_int }//namespace gtx }//namespace glm diff --git a/glm/gtx/vec1.hpp b/glm/gtx/vec1.hpp index f47ee5b9..0da37451 100644 --- a/glm/gtx/vec1.hpp +++ b/glm/gtx/vec1.hpp @@ -34,41 +34,41 @@ namespace glm namespace precision { //! 1 component vector of high precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLM_GTX_vec1 extension. typedef detail::highp_vec1_t highp_vec1; //! 1 component vector of medium precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLM_GTX_vec1 extension. typedef detail::mediump_vec1_t mediump_vec1; //! 1 component vector of low precision floating-point numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLM_GTX_vec1 extension. typedef detail::lowp_vec1_t lowp_vec1; //! 1 component vector of high precision signed integer numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLM_GTX_vec1 extension. typedef detail::highp_ivec1_t highp_ivec1; //! 1 component vector of medium precision signed integer numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLM_GTX_vec1 extension. typedef detail::mediump_ivec1_t mediump_ivec1; //! 1 component vector of low precision signed integer numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLM_GTX_vec1 extension. typedef detail::lowp_ivec1_t lowp_ivec1; //! 1 component vector of high precision unsigned integer numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLM_GTX_vec1 extension. typedef detail::highp_uvec1_t highp_uvec1; //! 1 component vector of medium precision unsigned integer numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLM_GTX_vec1 extension. typedef detail::mediump_uvec1_t mediump_uvec1; //! 1 component vector of low precision unsigned integer numbers. - //! There is no garanty on the actual precision. + //! There is no guarantee on the actual precision. //! From GLM_GTX_vec1 extension. typedef detail::lowp_uvec1_t lowp_uvec1; }//namespace precision diff --git a/glm/gtx/vector_access.hpp b/glm/gtx/vector_access.hpp index eb5688fc..1968d4f9 100644 --- a/glm/gtx/vector_access.hpp +++ b/glm/gtx/vector_access.hpp @@ -30,6 +30,9 @@ namespace glm //! GLM_GTX_vector_access extension: Function to set values to vectors namespace vector_access { + /// \addtogroup gtx_vector_access + ///@{ + //! Set values to a 2 components vector. //! From GLM_GTX_vector_access extension. template <typename valType> @@ -57,6 +60,8 @@ namespace glm valType const & z, valType const & w); + ///@} + }//namespace vector_access }//namespace gtx }//namespace glm diff --git a/glm/gtx/vector_angle.hpp b/glm/gtx/vector_angle.hpp index 48f6ade3..2dacbe81 100644 --- a/glm/gtx/vector_angle.hpp +++ b/glm/gtx/vector_angle.hpp @@ -37,6 +37,9 @@ namespace glm using namespace quaternion; using namespace epsilon; + /// \addtogroup gtx_vector_angle + ///@{ + //! Returns the absolute angle between x and y. //! Parameters need to be normalized. //! From GLM_GTX_vector_angle extension @@ -61,6 +64,8 @@ namespace glm vecType const & x, vecType const & y, detail::tvec3<typename vecType::value_type> const & ref); + + ///@} }//namespace vector_angle }//namespace gtx }//namespace glm diff --git a/glm/gtx/vector_query.hpp b/glm/gtx/vector_query.hpp index 1629c666..776a99ed 100644 --- a/glm/gtx/vector_query.hpp +++ b/glm/gtx/vector_query.hpp @@ -32,7 +32,10 @@ namespace glm //! GLM_GTX_vector_query extension: Query informations of vector types namespace vector_query { - //! Check if two vectors are collinears. + /// \addtogroup gtx_vector_query + ///@{ + + //! Check if two vectors are collinears. //! From GLM_GTX_vector_query extensions. template <typename genType> bool areCollinear( @@ -86,6 +89,8 @@ namespace glm const genType& v1, const GLMvalType epsilon = std::numeric_limits<GLMvalType>::epsilon()); + ///@} + }//namespace vector_query }//namespace gtx }//namespace glm diff --git a/glm/gtx/verbose_operator.hpp b/glm/gtx/verbose_operator.hpp index 1ac56b2e..951ea47f 100644 --- a/glm/gtx/verbose_operator.hpp +++ b/glm/gtx/verbose_operator.hpp @@ -30,6 +30,9 @@ namespace glm //! GLM_GTX_verbose_operator extension: Use words to replace operators namespace verbose_operator { + /// \addtogroup gtx_verbose_operator + ///@{ + //! Addition of two values //! From GLM_GTX_verbose_operator extension. template <typename genTypeT, typename genTypeU> @@ -54,6 +57,8 @@ namespace glm //! From GLM_GTX_verbose_operator extension. template <typename genTypeT, typename genTypeU, typename genTypeV> genTypeT mad(genTypeT const & a, genTypeU const & b, genTypeV const & c); + + ///@} }//namespace verbose_operator }//namespace gtx }//namespace glm diff --git a/glm/gtx/wrap.hpp b/glm/gtx/wrap.hpp index 67bfd401..caac013c 100644 --- a/glm/gtx/wrap.hpp +++ b/glm/gtx/wrap.hpp @@ -30,6 +30,9 @@ namespace glm //! GLM_GTX_wrap: Wrapping mode using my texture samping. namespace wrap { + /// \addtogroup gtx_wrap + ///@{ + //! Simulate GL_CLAMP OpenGL wrap mode //! From GLM_GTX_wrap extension. template <typename genType> @@ -45,6 +48,8 @@ namespace glm template <typename genType> genType mirrorRepeat(genType const & Texcoord); + ///@} + }//namespace wrap }//namespace gtx }//namespace glm From e755047ad729a44994b8198488a76d47a4d57144 Mon Sep 17 00:00:00 2001 From: Christophe Riccio <g.truc.creation@gmail.com> Date: Sat, 5 Feb 2011 00:52:58 +0000 Subject: [PATCH 02/22] Added doxy modules --- doc/coreModules.doxy | 58 ++++ doc/experimentalModules.doxy | 114 ++++++++ doc/gtcModules.doxy | 500 +++++++++++++++++++++++++++++++++++ doc/pages.doxy | 268 +++++++++++++++++++ 4 files changed, 940 insertions(+) create mode 100644 doc/coreModules.doxy create mode 100644 doc/experimentalModules.doxy create mode 100644 doc/gtcModules.doxy create mode 100644 doc/pages.doxy diff --git a/doc/coreModules.doxy b/doc/coreModules.doxy new file mode 100644 index 00000000..97156108 --- /dev/null +++ b/doc/coreModules.doxy @@ -0,0 +1,58 @@ +/** + \defgroup core GLM Core + + \brief The core of GLM, which implements exactly and only the GLSL specification to the degree possible. + + The GLM core consists of \ref core_types "C++ types that mirror GLSL types", + \ref core_funcs "C++ functions that mirror the GLSL functions". It also includes + \ref core_precision "a set of precision-based types" that can be used in the appropriate + functions. The C++ types are all based on a basic set of \ref core_template "template types". +**/ + + +/** + \defgroup core_types Core GLSL Types + + \brief The standard types defined by the GLSL specification. + + These types are all typedefs of more generalized, template types. To see the definiton + of the equivalent template types, go to \ref core_template. + + \ingroup core +**/ + +/** + \defgroup core_precision Core Precision Types + + \brief Non-GLSL types that are used to define precision-based types. + + The GLSL language allows the user to define the precision of a particular variable. + In OpenGL's GLSL, these precision qualifiers have no effect; they are there for compatibility + with OpenGL ES's precision qualifiers, where they \em do have an effect. + + C++ has no language equivalent to precision qualifiers. So GLM provides the next-best thing: + a number of typedefs of the \ref core_template that use a particular precision. + + None of these types make any guarantees about the actual precision used. + + \ingroup core +**/ + +/** + \defgroup core_template Core Template Types + + \brief The generic template types used as the basis for the core types. + + These types are all templates used to define the actual \ref core_types. + + \ingroup core +**/ + +/** + \defgroup core_funcs Core GLSL Functions + + \brief The functions defined by the GLSL specification. + + \ingroup core +**/ + diff --git a/doc/experimentalModules.doxy b/doc/experimentalModules.doxy new file mode 100644 index 00000000..21085ba6 --- /dev/null +++ b/doc/experimentalModules.doxy @@ -0,0 +1,114 @@ +/** + \defgroup gtc GLM Core Extensions + + \brief Functions and types that GLSL does not provide, but are useful to have. + + Core extensions differ from \ref gtx "experimental extensions" in that core extensions + are fairly stable. The API for experimental extensions is expected to change + significantly between versions. + + You can bring all of the extensions, core or experimental, in by + including <glm/ext.hpp> Otherwise, you will have to include each extension + by including a specific file. +**/ + +/** + \defgroup gtc_half_float Half Float Core Extension + \ingroup gtc + + \brief Defines the half-float type, along with various typedefs for vectors and matrices. + + You must include <glm/glc/half_float.hpp> to get this functionality. +**/ + +/** + \defgroup gtc_matrix_access Matrix Access Core Extension + \ingroup gtc + + \brief Defines functions that allow you to access rows or columns of a matrix easily. + + You must include <glm/glc/matrix_access.hpp> to get this functionality. +**/ + +/** + \defgroup gtc_matrix_integer Integer Matrix Core Extension + \ingroup gtc + + \brief Defines a number of matrices with integer types. + + You must include <glm/glc/matrix_integer.hpp> to get this functionality. +**/ + +/** + \defgroup gtc_matrix_inverse Matrix Inverse Core Extension + \ingroup gtc + + \brief Defines additional matrix inverting functions. + + You must include <glm/glc/matrix_inverse.hpp> to get this functionality. +**/ + +/** + \defgroup gtc_matrix_transform Matrix Transform Core Extension + \ingroup gtc + + \brief Defines functions that generate common transformation matrices. + + The matrices generated by this extension use standard OpenGL fixed-function + conventions. For example, the lookAt function generates a transform from world + space into the specific eye space that the projective matrix functions ( + perspective, ortho, etc) are designed to expect. The OpenGL compatibility + specifications defines the particular layout of this eye space. + + You must include <glm/glc/matrix_transform.hpp> to get this functionality. +**/ + +/** + \defgroup gtc_quaternion Quaternion Core Extension + \ingroup gtc + + \brief Defines a templated quaternion type and several quaternion operations. + + You must include <glm/glc/quaternion.hpp> to get this functionality. +**/ + +/** + \defgroup gtc_type_precision Type Precision Core Extension + \ingroup gtc + + \brief Defines specific C++-based precision types. + + \ref core_precision defines types based on GLSL's precision qualifiers. This + extension defines types based on explicitly-sized C++ data types. + + You must include the file <glm/glc/type_precision.hpp> to get this functionality. +**/ + +/** + \defgroup gtc_type_ptr Pointer Access Core Extension + \ingroup gtc + + \brief Used to get a pointer to the memory layout of a basic type. + + This extension defines an overloaded function, glm::value_ptr, which + takes any of the \ref core_template "core template types". It returns + a pointer to the memory layout of the object. Matrix types store their values + in row-major order. + + This is useful for uploading data to matrices or copying data to buffer objects. + + Example: + + \code +#include <glm/glm.hpp> +#include <glm/glc/type_ptr.hpp> +glm::vec3 aVector(3); +glm::mat4 someMatrix(1.0); + +glUniform3fv(uniformLoc, 1, glm::value_ptr(aVector)); +glUniformMatrix4fv(uniformMatrixLoc, 1, GL_FALSE, glm::value_ptr(someMatrix)); + \endcode + + You must include the file <glm/glc/type_ptr.hpp> to get this functionality. +**/ + diff --git a/doc/gtcModules.doxy b/doc/gtcModules.doxy new file mode 100644 index 00000000..e37e74a8 --- /dev/null +++ b/doc/gtcModules.doxy @@ -0,0 +1,500 @@ +/** + \defgroup gtx GLM Experimental Extensions + + \brief Functions and types that GLSL does not provide, but are useful to have. + + Experimental extensions are useful functions and types, but the development of + their API and functionality is not necessarily stable. They can change substantially + between versions. Backwards compatibility is not much of an issue for them. + + You can bring all of the extensions, core or experimental, in by + including <glm/ext.hpp> Otherwise, you will have to include each extension + by including a specific file. +**/ + +/** + \defgroup gtx_associated_min_max Associated Min/Max Experimental Extension + \ingroup gtx + + \brief Min and max functions that return associated values not the compared onces. + + You must include the file <glm/glx/associated_min_max.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_bit Bitwise Operations Experimental Extension + \ingroup gtx + + \brief Allow to perform bit operations on integer values + + You must include the file <glm/glx/bit.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_closest_point Find Closest Point Experimental Extension + \ingroup gtx + + \brief Find the point on a straight line which is the closet of a point. + + You must include the file <glm/glx/closest_point.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_color_cast Color Conversion Experimental Extension + \ingroup gtx + + \brief Conversion between two color types. + + You must include the file <glm/glx/color_cast.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_color_space RGB to HSV Conversion Experimental Extension + \ingroup gtx + + \brief Related to RGB to HSV conversions and operations. + + You must include the file <glm/glx/color_space.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_color_space_YCoCg RGB to YCoCg Conversion Experimental Extension + \ingroup gtx + + \brief RGB to YCoCg conversions and operations + + You must include the file <glm/glx/color_space_YCoCg.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_compatibility Cg and HLSL Compatibility Experimental Extension + \ingroup gtx + + \brief Provide functions to increase the compatibility with Cg and HLSL languages + + You must include the file <glm/glx/compatibility.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_component_wise Component Wise Experimental Extension + \ingroup gtx + + \brief Operations between components of a type + + You must include the file <glm/glx/component_wise.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_epsilon Epsilon Comparison Experimental Extension + \ingroup gtx + + \brief Comparison functions for a user defined epsilon values. + + You must include the file <glm/glx/epsilon.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_euler_angles Matrix From Euler Angles Experimental Extension + \ingroup gtx + + \brief Build matrices from Euler angles. + + You must include the file <glm/glx/euler_angles.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_extend Position Extending Experimental Extension + \ingroup gtx + + \brief Extend a position from a source to a position at a defined length. + + You must include the file <glm/glx/extend.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_extented_min_max Extended Min Max Experimental Extension + \ingroup gtx + + \brief Min and max functions for 3 to 4 parameters. + + You must include the file <glm/glx/extented_min_max.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_fast_exponential Fast Exponentiation Experimental Extension + \ingroup gtx + + \brief Fast but less accurate implementations of exponential based functions. + + You must include the file <glm/glx/fast_exponential.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_fast_square_root Fast Square Root Experimental Extension + \ingroup gtx + + \brief Fast but less accurate implementations of square root based functions. + + You must include the file <glm/glx/fast_square_root.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_fast_trigonometry Fast Trig Experimental Extension + \ingroup gtx + + \brief Fast but less accurate implementations of trigonometric functions. + + You must include the file <glm/glx/fast_trigonometry.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_handed_coordinate_space Space Handedness Experimental Extension + \ingroup gtx + + \brief To know if a set of three basis vectors defines a right or left-handed coordinate system. + + You must include the file <glm/glx/handed_coordinate_system.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_inertia Intertial Matrix Experimental Extension + \ingroup gtx + + \brief Create inertia matrices + + You must include the file <glm/glx/inertia.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_int_10_10_10_2 Packed Integer Experimental Extension + \ingroup gtx + + \brief Add support for integer for core functions + + You must include the file <glm/glx/int_10_10_10_2.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_integer Integer Function Experimental Extension + \ingroup gtx + + \brief Add support for integer for core functions + + You must include the file <glm/glx/integer.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_intersect Intersection Test Experimental Extension + \ingroup gtx + + \brief Add intersection functions + + You must include the file <glm/glx/intersect.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_log_base Log With Base Experimental Extension + \ingroup gtx + + \brief Logarithm for any base. base can be a vector or a scalar. + + You must include the file <glm/glx/log_base.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_matrix_cross_product Cross Product Matrices Experimental Extension + \ingroup gtx + + \brief Build cross product matrices + + You must include the file <glm/glx/matrix_cross_product.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_matrix_major_storage Build Matrix Experimental Extension + \ingroup gtx + + \brief Build matrices with specific matrix order, row or column + + You must include the file <glm/glx/matrix_major_storage.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_matrix_operation Diagonal Matrix Experimental Extension + \ingroup gtx + + \brief Build diagonal matrices from vectors. + + You must include the file <glm/glx/matrix_operation.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_matrix_query Query Matrix Properties Experimental Extension + \ingroup gtx + + \brief Query to evaluate matrix properties + + You must include the file <glm/glx/matrix_query.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_mixed_product Mixed Product Experimental Extension + \ingroup gtx + + \brief Mixed product of 3 vectors. + + You must include the file <glm/glx/mixed_product.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_multiple Multiples Experimental Extension + \ingroup gtx + + \brief Find the closest number of a number multiple of other number. + + You must include the file <glm/glx/multiple.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_norm Vector Norm Experimental Extension + \ingroup gtx + + \brief Various way to compute vector norms. + + You must include the file <glm/glx/norm.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_normal Compute Normal Experimental Extension + \ingroup gtx + + \brief Compute the normal of a triangle. + + You must include the file <glm/glx/normal.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_normalize_dot Normalize Dot Product Experimental Extension + \ingroup gtx + + \brief Dot product of vectors that need to be normalize with a single square root. + + You must include the file <glm/glx/normalized_dot.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_number_precision Number Precision Experimental Extension + \ingroup gtx + + \brief Defined size types. + + You must include the file <glm/glx/number_precision.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_ocl_type OpenCL Types Experimental Extension + \ingroup gtx + + \brief OpenCL types. + + You must include the file <glm/glx/ocl_type.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_optimum_pow Optimum Pow Experimental Extension + \ingroup gtx + + \brief Integer exponentiation of power functions. + + You must include the file <glm/glx/optimum_pow.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_orthonormalize Orthonormalize Experimental Extension + \ingroup gtx + + \brief Orthonormalize matrices. + + You must include the file <glm/glx/orthonormalize.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_perpendicular Perpendicular Experimental Extension + \ingroup gtx + + \brief Perpendicular of a vector from other one + + You must include the file <glm/glx/perpendicular.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_polar_coordinates Polar Coordinates Experimental Extension + \ingroup gtx + + \brief Conversion from Euclidean space to polar space and revert. + + You must include the file <glm/glx/polar_coordinates.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_projection Projection Experimental Extension + \ingroup gtx + + \brief Projection of a vector to other one + + You must include the file <glm/glx/projection.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_quaternion Quaternion Experimental Extension + \ingroup gtx + + \brief Quaternion types and functions + + You must include the file <glm/glx/quaternion.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_random Random Experimental Extension + \ingroup gtx + + \brief Generate random number from various distribution methods + + You must include the file <glm/glx/random.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_raw_data Raw Data Experimental Extension + \ingroup gtx + + \brief Projection of a vector to other one + + You must include the file <glm/glx/raw_data.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_reciprocal Reciprocal Experimental Extension + \ingroup gtx + + \brief Define secant, cosecant and cotangent functions. + + You must include the file <glm/glx/reciprocal.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_rotate_vector Rotate Vector Experimental Extension + \ingroup gtx + + \brief Function to directly rotate a vector + + You must include the file <glm/glx/rotate_vector.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_simd_mat4 SIMD Mat4 Experimental Extension + \ingroup gtx + + \brief SIMD implementation of mat4 type. + + You must include the file <glm/glx/simd_mat4.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_simd_vec4 SIMD Vec4 Experimental Extension + \ingroup gtx + + \brief SIMD implementation of vec4 type. + + You must include the file <glm/glx/simd_vec4.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_spline Spline Experimental Extension + \ingroup gtx + + \brief Spline functions + + You must include the file <glm/glx/spline.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_string_cast String Cast Experimental Extension + \ingroup gtx + + \brief Setup strings for GLM type values + + You must include the file <glm/glx/transform.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_transform Transformation Matrices Experimental Extension + \ingroup gtx + + \brief Add transformation matrices + + You must include the file <glm/glx/transform2.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_transform2 Extra Transform Matrices Experimental Extension + \ingroup gtx + + \brief Add extra transformation matrices + + You must include the file <glm/glx/unsigned_int.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_unsigned_int Unsigned Int Experimental Extension + \ingroup gtx + + \brief Add support for unsigned integer for core functions + + You must include the file <glm/glx/unsigned_int.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_vector_access Vector Access Experimental Extension + \ingroup gtx + + \brief Function to set values to vectors + + You must include the file <glm/glx/vector_access.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_vector_angle Vector Angle Experimental Extension + \ingroup gtx + + \brief Compute angle between vectors + + You must include the file <glm/glx/vector_angle.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_vector_query Vector Query Experimental Extension + \ingroup gtx + + \brief Query informations of vector types + + You must include the file <glm/glx/vector_query.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_verbose_operator Verbose Operator Experimental Extension + \ingroup gtx + + \brief Use words to replace operators + + You must include the file <glm/glx/verbose_operator.hpp> to get this functionality. +**/ + +/** + \defgroup gtx_wrap Wrap Experimental Extension + \ingroup gtx + + \brief Wrapping mode using my texture samping. + + You must include the file <glm/glx/wrap.hpp> to get this functionality. +**/ + diff --git a/doc/pages.doxy b/doc/pages.doxy new file mode 100644 index 00000000..cf1d9005 --- /dev/null +++ b/doc/pages.doxy @@ -0,0 +1,268 @@ +/** + \mainpage OpenGL Mathematics + OpenGL Mathematics (GLM) is a C++ mathematics library for 3D applications based + on the OpenGL Shading Language (GLSL) specification. + + GLM provides 3D programmers with math classes and functions that are similar to + GLSL or any high level GPU programming language. The idea is to have a library + that has identical naming conventions and functionalities than GLSL so that when + developers know GLSL, they know how to use GLM. + + GLM is not limited strictly to GLSL features. + + However, this project isn't limited by GLSL features. An extension system, based + on the GLSL extension conventions, allows extended capabilities. + + This library can be used with OpenGL but also for software rendering (Raytracing + / Rasterisation), image processing and as much contexts as a simple math library + could be used for. + + GLM is written as a platform independent library. The following compilers are + officially supported: + \li GNU GCC 3.4 and higher + \li Microsoft Visual Studio 8.0 and higher + + The source code is under the + <a href="http://www.opensource.org/licenses/mit-license.php">MIT licence</a>. + + Any feedback is welcome and can be sent to glm@g-truc.net. + + \li \subpage started + \li \subpage faq + \li \subpage issues + \li \subpage reference +**/ + +/** + \page started Getting Started + + \section started_compiler Compiler Setup + + GLM is a header library. Therefore, it doesn't require to be built separately. All that + is necessary to use GLM is to add the GLM install path to your compiler's include + search paths. (-I option with GCC) Alternatively, you can copy the GLM files directly into your + project's source directory. + + GLM makes heavy use of C++ templates. This may significantly increase the compile + time for files that use GLM. If this is a problem for your needs, precompiled headers + are a good solution for avoiding this issue. + + \section started_core Core Features + + After initial compiler setup, all core features of GLM (core GLSL features) can be accessed + by including the glm.hpp header. The line: #include <glm/glm.hpp> is used for a typical + compiler setup. + + Note that by default there are no dependencies on external headers like gl.h, gl3.h, glu.h or + windows.h. + + \section started_swizzle Setup of Swizzle Operators + + A common feature of shader languages like GLSL is components swizzling. This involves + being able to select which components of a vector are used and in what order. For + example, "variable.x", "variable.xxy", "variable.zxyy" are examples of swizzling. + + However in GLM, swizzling operators are disabled by default. To enable swizzling the + define GLM_SWIZZLE must be defined to one of GLM_SWIZZLE_XYZW, GLM_SWIZZLE_RGBA, + GLM_SWIZZLE_STQP or GLM_SWIZZLE_FULL depending on what swizzle syntax is required. + + To enable swizzling, it is suggested that setup.hpp be included first, then custom + settings and finally glm.hpp. For + example: + + \code +#include <glm/setup.hpp> +#define GLM_SWIZZLE GLM_SWIZZLE_FULL +#include <glm/glm.hpp> + \endcode + + These custom setup lines can then be placed in a common project header or precompiled + header. + + \section started_sample Basic Use of GLM Core + + \code +#include <glm/glm.hpp> + +int foo() +{ + glm::vec4 Position = glm::vec4(glm::vec3(0.0), 1.0); + glm::mat4 Model = glm::mat4(1.0); + Model[4] = glm::vec4(1.0, 1.0, 0.0, 1.0); + glm::vec4 Transformed = Model * Position; + return 0; +} + \endcode + + \section started_extensions GLM Extensions + + GLM extends the core GLSL feature set with extensions. These extensions include: + quaternion, transformation, spline, matrix inverse, color spaces, etc. + Note that some extensions are incompatible with other extension as and may result in C++ + name collisions when used together. + + To use a particular extension, simply include the extension header file. All + extension features are added to the glm namespace. + + \code +#include <glm/glm.hpp> +#include <glm/gtc/matrix_transform.hpp> + +int foo() +{ + glm::vec4 Position = glm::vec4(glm::vec3(0.0f), 1.0f); + glm::mat4 Model = glm::translate(1.0f, 1.0f, 1.0f); + glm::vec4 Transformed = Model * Position; + return 0; +} + \endcode + + \section started_depend Dependencies + + When <glm/glm.hpp> is included, GLM provides all the GLSL features it implements in C++. + + By including <glm/ext.hpp> all the features of all extensions of GLM are included. + + When you include a specific extension, all the dependent extensions will be included as well. + All the extensions depend on GLM core. (<glm/glm.hpp>) + + GLM has no dependencies on external libraries. However, if <boost/static_assert.hpp> is + included before the GLM headers, boost::static_assert will be used all over GLM code. +**/ + +/** + \page faq FAQ + + \section faq1 Why GLM follows GLSL specification and conventions? + + Following GLSL conventions is a really strict policy of GLM. GLM has been designed following + the idea that everyone does its own math library with his own conventions. The idea is that + brilliant developers (the OpenGL ARB) worked together and agreed to make GLSL. Following + GLSL conventions is a way to find consensus. Moreover, basically when a developer knows + GLSL, he knows GLM. + + \section faq2 Would it be possible to add my feature? + + YES. Every feature request could be added by submitting it here: + https://sourceforge.net/apps/trac/ogl-math/newticket + + These requests would mainly take the form of extensions and if you provide an + implementation, the feature will be added automatically in the next GLM release. + + A SourceForge.net account is required to create a ticket. + + \section faq3 Does GLM run GLSL program? + + No, GLM is a C++ implementation of a subset of GLSL. + + \section faq4 Does a GLSL compiler build GLM codes? + + Not directly but it can be easy to port. However, the difference between a shader and C++ + program at software design level will probably make this idea unlikely or impossible. + + \section faq5 Should I use GTX extensions? + + GTX extensions are qualified to be experimental extensions. In GLM this means that these + extensions might change from version to version without restriction. In practice, it doesn't + really change except time to time. GTC extensions are stabled, tested and perfectly reliable + in time. Many GTX extensions extend GTC extensions and provide a way to explore features + and implementations before becoming stable by a promotion as GTC extensions. This is + fairly the way OpenGL features are developed through extensions. + + \section faq6 Would it be possible to change GLM to do glVertex3fv(glm::vec3(0))? + + It's possible to implement such thing in C++ with the implementation of the appropriate cast + operator. In this example it's likely because it would result as a transparent cast, however, + most of the time it's really unlikely resulting of build with no error and programs running + with unexpected behaviors. + + GLM_GTC_type_ptr extension provide a safe solution: + + \code +glm::vec4 v(0); +glm::mat4 m(0); + +glVertex3fv(glm::value_ptr(v)) +glLoadMatrixfv(glm::value_ptr(m)); + \endcode + + Another solution inspired by STL: + + \code +glVertex3fv(&v[0]); +glLoadMatrixfv(&m[0][0]); + \endcode + + \section faq7 Where can I ask my questions? + + A good place is the OpenGL Toolkits forum on OpenGL.org: + http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=postlist&Board=10&page=1 + + \section faq8 Where can I report a bug? + + Just like feature requests: + https://sourceforge.net/apps/trac/ogl-math/newticket + + A SourceForge account is required to create a ticket. + + \section faq8 Where can I find the documentation of extensions? + + The Doxygen generated documentation includes a complete list of all extensions available. + Explore this documentation to get a complete view of all GLM capabilities! + http://glm.g-truc.net/html/index.html + + \section faq9 Should I use 'using namespace glm;'? + + NO! Chances are that if 'using namespace glm;' is called, name collisions will happen + because GLM is based on GLSL and GLSL is also a consensus on tokens so these tokens are + probably used quite often. +**/ + +/** + \page issues Known Issues + + \section issue1 Swizzle Operators + + Enabling the swizzle operator can result in name collisions with the Win32 API. + Consequently swizzle operators are disable by default. A safer way to do swizzling is to use + the member function 'swizzle'. Future version of GLM should remove this limitation. + + \section issue2 not Function + + The GLSL keyword not is also a keyword in C++. To prevent name collisions, the GLSL not + function has been implemented with the name not_. + + \section issue3 Half Based Types + GLM supports half float number types through the extension GLM_GTC_half_float. This + extension provides the types half, hvec*, hmat*x* and hquat*. + + Unfortunately, C++ norm doesn't support anonymous unions which limit hvec* vector + components access to x, y, z and w. + + However, Visual C++ does support anonymous unions. When + GLM_USE_ANONYMOUS_UNION is define, it enables the support of all component names + (x,y,z,w ; r,g,b,a ; s,t,p,q). With GCC it will result in a build error. +**/ + +/** + \page reference References + + OpenGL 4.1 core specification: + http://www.opengl.org/registry/doc/glspec41.core.20100725.pdf + + GLSL 4.10 specification: + http://www.opengl.org/registry/doc/GLSLangSpec.4.10.6.clean.pdf + + GLM HEAD snapshot: + http://ogl-math.git.sourceforge.net/git/gitweb.cgi?p=ogl-math/ogl-math;a=snapshot;h=HEAD;sf=tgz + + GLM Trac, for bug report and feature request: + https://sourceforge.net/apps/trac/ogl-math + + GLM website: + http://glm.g-truc.net + + G-Truc Creation page: + http://www.g-truc.net/project-0016.html +**/ + From c4c558098f4386ec88b52ea98e589b12a5e18dc9 Mon Sep 17 00:00:00 2001 From: Christophe Riccio <g.truc.creation@gmail.com> Date: Mon, 7 Feb 2011 12:31:35 +0000 Subject: [PATCH 03/22] Added NewDocs patch --- doc/coreModules.doxy | 17 +- doc/experimentalModules.doxy | 542 ++++++++++++++++++++---- doc/gtcModules.doxy | 542 ++++-------------------- doc/pages.doxy | 784 +++++++++++++++++++++++++++-------- 4 files changed, 1168 insertions(+), 717 deletions(-) diff --git a/doc/coreModules.doxy b/doc/coreModules.doxy index 97156108..d5d1b3a9 100644 --- a/doc/coreModules.doxy +++ b/doc/coreModules.doxy @@ -1,4 +1,4 @@ -/** +/*! \defgroup core GLM Core \brief The core of GLM, which implements exactly and only the GLSL specification to the degree possible. @@ -7,21 +7,26 @@ \ref core_funcs "C++ functions that mirror the GLSL functions". It also includes \ref core_precision "a set of precision-based types" that can be used in the appropriate functions. The C++ types are all based on a basic set of \ref core_template "template types". + + The best documentation for GLM Core is the current GLSL specification, + <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.10.6.clean.pdf">version 4.1 + (pdf file)</a>. + There are a few \ref pg_differences "differences" between GLM core and GLSL. **/ -/** +/*! \defgroup core_types Core GLSL Types \brief The standard types defined by the GLSL specification. These types are all typedefs of more generalized, template types. To see the definiton - of the equivalent template types, go to \ref core_template. + of these template types, go to \ref core_template. \ingroup core **/ -/** +/*! \defgroup core_precision Core Precision Types \brief Non-GLSL types that are used to define precision-based types. @@ -38,7 +43,7 @@ \ingroup core **/ -/** +/*! \defgroup core_template Core Template Types \brief The generic template types used as the basis for the core types. @@ -48,7 +53,7 @@ \ingroup core **/ -/** +/*! \defgroup core_funcs Core GLSL Functions \brief The functions defined by the GLSL specification. diff --git a/doc/experimentalModules.doxy b/doc/experimentalModules.doxy index 21085ba6..5f9d1dd5 100644 --- a/doc/experimentalModules.doxy +++ b/doc/experimentalModules.doxy @@ -1,114 +1,500 @@ -/** - \defgroup gtc GLM Core Extensions +/*! + \defgroup gtx GLM Experimental Extensions \brief Functions and types that GLSL does not provide, but are useful to have. - Core extensions differ from \ref gtx "experimental extensions" in that core extensions - are fairly stable. The API for experimental extensions is expected to change - significantly between versions. + Experimental extensions are useful functions and types, but the development of + their API and functionality is not necessarily stable. They can change substantially + between versions. Backwards compatibility is not much of an issue for them. You can bring all of the extensions, core or experimental, in by including <glm/ext.hpp> Otherwise, you will have to include each extension by including a specific file. **/ -/** - \defgroup gtc_half_float Half Float Core Extension - \ingroup gtc +/*! + \defgroup gtx_associated_min_max Associated Min/Max Experimental Extension + \ingroup gtx - \brief Defines the half-float type, along with various typedefs for vectors and matrices. + \brief Min and max functions that return associated values not the compared onces. - You must include <glm/glc/half_float.hpp> to get this functionality. + You must include the file <glm/glx/associated_min_max.hpp> to get this functionality. **/ -/** - \defgroup gtc_matrix_access Matrix Access Core Extension - \ingroup gtc +/*! + \defgroup gtx_bit Bitwise Operations Experimental Extension + \ingroup gtx - \brief Defines functions that allow you to access rows or columns of a matrix easily. + \brief Allow to perform bit operations on integer values - You must include <glm/glc/matrix_access.hpp> to get this functionality. + You must include the file <glm/glx/bit.hpp> to get this functionality. **/ -/** - \defgroup gtc_matrix_integer Integer Matrix Core Extension - \ingroup gtc +/*! + \defgroup gtx_closest_point Find Closest Point Experimental Extension + \ingroup gtx - \brief Defines a number of matrices with integer types. - - You must include <glm/glc/matrix_integer.hpp> to get this functionality. + \brief Find the point on a straight line which is the closet of a point. + + You must include the file <glm/glx/closest_point.hpp> to get this functionality. **/ -/** - \defgroup gtc_matrix_inverse Matrix Inverse Core Extension - \ingroup gtc +/*! + \defgroup gtx_color_cast Color Conversion Experimental Extension + \ingroup gtx - \brief Defines additional matrix inverting functions. - - You must include <glm/glc/matrix_inverse.hpp> to get this functionality. + \brief Conversion between two color types. + + You must include the file <glm/glx/color_cast.hpp> to get this functionality. **/ -/** - \defgroup gtc_matrix_transform Matrix Transform Core Extension - \ingroup gtc +/*! + \defgroup gtx_color_space RGB to HSV Conversion Experimental Extension + \ingroup gtx - \brief Defines functions that generate common transformation matrices. - - The matrices generated by this extension use standard OpenGL fixed-function - conventions. For example, the lookAt function generates a transform from world - space into the specific eye space that the projective matrix functions ( - perspective, ortho, etc) are designed to expect. The OpenGL compatibility - specifications defines the particular layout of this eye space. - - You must include <glm/glc/matrix_transform.hpp> to get this functionality. + \brief Related to RGB to HSV conversions and operations. + + You must include the file <glm/glx/color_space.hpp> to get this functionality. **/ -/** - \defgroup gtc_quaternion Quaternion Core Extension - \ingroup gtc +/*! + \defgroup gtx_color_space_YCoCg RGB to YCoCg Conversion Experimental Extension + \ingroup gtx - \brief Defines a templated quaternion type and several quaternion operations. - - You must include <glm/glc/quaternion.hpp> to get this functionality. + \brief RGB to YCoCg conversions and operations + + You must include the file <glm/glx/color_space_YCoCg.hpp> to get this functionality. **/ -/** - \defgroup gtc_type_precision Type Precision Core Extension - \ingroup gtc +/*! + \defgroup gtx_compatibility Cg and HLSL Compatibility Experimental Extension + \ingroup gtx - \brief Defines specific C++-based precision types. - - \ref core_precision defines types based on GLSL's precision qualifiers. This - extension defines types based on explicitly-sized C++ data types. - - You must include the file <glm/glc/type_precision.hpp> to get this functionality. + \brief Provide functions to increase the compatibility with Cg and HLSL languages + + You must include the file <glm/glx/compatibility.hpp> to get this functionality. **/ -/** - \defgroup gtc_type_ptr Pointer Access Core Extension - \ingroup gtc +/*! + \defgroup gtx_component_wise Component Wise Experimental Extension + \ingroup gtx - \brief Used to get a pointer to the memory layout of a basic type. - - This extension defines an overloaded function, glm::value_ptr, which - takes any of the \ref core_template "core template types". It returns - a pointer to the memory layout of the object. Matrix types store their values - in row-major order. - - This is useful for uploading data to matrices or copying data to buffer objects. - - Example: - - \code -#include <glm/glm.hpp> -#include <glm/glc/type_ptr.hpp> -glm::vec3 aVector(3); -glm::mat4 someMatrix(1.0); + \brief Operations between components of a type -glUniform3fv(uniformLoc, 1, glm::value_ptr(aVector)); -glUniformMatrix4fv(uniformMatrixLoc, 1, GL_FALSE, glm::value_ptr(someMatrix)); - \endcode - - You must include the file <glm/glc/type_ptr.hpp> to get this functionality. + You must include the file <glm/glx/component_wise.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_epsilon Epsilon Comparison Experimental Extension + \ingroup gtx + + \brief Comparison functions for a user defined epsilon values. + + You must include the file <glm/glx/epsilon.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_euler_angles Matrix From Euler Angles Experimental Extension + \ingroup gtx + + \brief Build matrices from Euler angles. + + You must include the file <glm/glx/euler_angles.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_extend Position Extending Experimental Extension + \ingroup gtx + + \brief Extend a position from a source to a position at a defined length. + + You must include the file <glm/glx/extend.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_extented_min_max Extended Min Max Experimental Extension + \ingroup gtx + + \brief Min and max functions for 3 to 4 parameters. + + You must include the file <glm/glx/extented_min_max.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_fast_exponential Fast Exponentiation Experimental Extension + \ingroup gtx + + \brief Fast but less accurate implementations of exponential based functions. + + You must include the file <glm/glx/fast_exponential.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_fast_square_root Fast Square Root Experimental Extension + \ingroup gtx + + \brief Fast but less accurate implementations of square root based functions. + + You must include the file <glm/glx/fast_square_root.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_fast_trigonometry Fast Trig Experimental Extension + \ingroup gtx + + \brief Fast but less accurate implementations of trigonometric functions. + + You must include the file <glm/glx/fast_trigonometry.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_handed_coordinate_space Space Handedness Experimental Extension + \ingroup gtx + + \brief To know if a set of three basis vectors defines a right or left-handed coordinate system. + + You must include the file <glm/glx/handed_coordinate_system.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_inertia Intertial Matrix Experimental Extension + \ingroup gtx + + \brief Create inertia matrices + + You must include the file <glm/glx/inertia.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_int_10_10_10_2 Packed Integer Experimental Extension + \ingroup gtx + + \brief Add support for integer for core functions + + You must include the file <glm/glx/int_10_10_10_2.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_integer Integer Function Experimental Extension + \ingroup gtx + + \brief Add support for integer for core functions + + You must include the file <glm/glx/integer.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_intersect Intersection Test Experimental Extension + \ingroup gtx + + \brief Add intersection functions + + You must include the file <glm/glx/intersect.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_log_base Log With Base Experimental Extension + \ingroup gtx + + \brief Logarithm for any base. base can be a vector or a scalar. + + You must include the file <glm/glx/log_base.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_matrix_cross_product Cross Product Matrices Experimental Extension + \ingroup gtx + + \brief Build cross product matrices + + You must include the file <glm/glx/matrix_cross_product.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_matrix_major_storage Build Matrix Experimental Extension + \ingroup gtx + + \brief Build matrices with specific matrix order, row or column + + You must include the file <glm/glx/matrix_major_storage.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_matrix_operation Diagonal Matrix Experimental Extension + \ingroup gtx + + \brief Build diagonal matrices from vectors. + + You must include the file <glm/glx/matrix_operation.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_matrix_query Query Matrix Properties Experimental Extension + \ingroup gtx + + \brief Query to evaluate matrix properties + + You must include the file <glm/glx/matrix_query.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_mixed_product Mixed Product Experimental Extension + \ingroup gtx + + \brief Mixed product of 3 vectors. + + You must include the file <glm/glx/mixed_product.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_multiple Multiples Experimental Extension + \ingroup gtx + + \brief Find the closest number of a number multiple of other number. + + You must include the file <glm/glx/multiple.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_norm Vector Norm Experimental Extension + \ingroup gtx + + \brief Various way to compute vector norms. + + You must include the file <glm/glx/norm.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_normal Compute Normal Experimental Extension + \ingroup gtx + + \brief Compute the normal of a triangle. + + You must include the file <glm/glx/normal.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_normalize_dot Normalize Dot Product Experimental Extension + \ingroup gtx + + \brief Dot product of vectors that need to be normalize with a single square root. + + You must include the file <glm/glx/normalized_dot.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_number_precision Number Precision Experimental Extension + \ingroup gtx + + \brief Defined size types. + + You must include the file <glm/glx/number_precision.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_ocl_type OpenCL Types Experimental Extension + \ingroup gtx + + \brief OpenCL types. + + You must include the file <glm/glx/ocl_type.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_optimum_pow Optimum Pow Experimental Extension + \ingroup gtx + + \brief Integer exponentiation of power functions. + + You must include the file <glm/glx/optimum_pow.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_orthonormalize Orthonormalize Experimental Extension + \ingroup gtx + + \brief Orthonormalize matrices. + + You must include the file <glm/glx/orthonormalize.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_perpendicular Perpendicular Experimental Extension + \ingroup gtx + + \brief Perpendicular of a vector from other one + + You must include the file <glm/glx/perpendicular.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_polar_coordinates Polar Coordinates Experimental Extension + \ingroup gtx + + \brief Conversion from Euclidean space to polar space and revert. + + You must include the file <glm/glx/polar_coordinates.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_projection Projection Experimental Extension + \ingroup gtx + + \brief Projection of a vector to other one + + You must include the file <glm/glx/projection.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_quaternion Quaternion Experimental Extension + \ingroup gtx + + \brief Quaternion types and functions + + You must include the file <glm/glx/quaternion.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_random Random Experimental Extension + \ingroup gtx + + \brief Generate random number from various distribution methods + + You must include the file <glm/glx/random.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_raw_data Raw Data Experimental Extension + \ingroup gtx + + \brief Projection of a vector to other one + + You must include the file <glm/glx/raw_data.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_reciprocal Reciprocal Experimental Extension + \ingroup gtx + + \brief Define secant, cosecant and cotangent functions. + + You must include the file <glm/glx/reciprocal.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_rotate_vector Rotate Vector Experimental Extension + \ingroup gtx + + \brief Function to directly rotate a vector + + You must include the file <glm/glx/rotate_vector.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_simd_mat4 SIMD Mat4 Experimental Extension + \ingroup gtx + + \brief SIMD implementation of mat4 type. + + You must include the file <glm/glx/simd_mat4.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_simd_vec4 SIMD Vec4 Experimental Extension + \ingroup gtx + + \brief SIMD implementation of vec4 type. + + You must include the file <glm/glx/simd_vec4.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_spline Spline Experimental Extension + \ingroup gtx + + \brief Spline functions + + You must include the file <glm/glx/spline.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_string_cast String Cast Experimental Extension + \ingroup gtx + + \brief Setup strings for GLM type values + + You must include the file <glm/glx/transform.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_transform Transformation Matrices Experimental Extension + \ingroup gtx + + \brief Add transformation matrices + + You must include the file <glm/glx/transform2.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_transform2 Extra Transform Matrices Experimental Extension + \ingroup gtx + + \brief Add extra transformation matrices + + You must include the file <glm/glx/unsigned_int.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_unsigned_int Unsigned Int Experimental Extension + \ingroup gtx + + \brief Add support for unsigned integer for core functions + + You must include the file <glm/glx/unsigned_int.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_vector_access Vector Access Experimental Extension + \ingroup gtx + + \brief Function to set values to vectors + + You must include the file <glm/glx/vector_access.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_vector_angle Vector Angle Experimental Extension + \ingroup gtx + + \brief Compute angle between vectors + + You must include the file <glm/glx/vector_angle.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_vector_query Vector Query Experimental Extension + \ingroup gtx + + \brief Query informations of vector types + + You must include the file <glm/glx/vector_query.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_verbose_operator Verbose Operator Experimental Extension + \ingroup gtx + + \brief Use words to replace operators + + You must include the file <glm/glx/verbose_operator.hpp> to get this functionality. +**/ + +/*! + \defgroup gtx_wrap Wrap Experimental Extension + \ingroup gtx + + \brief Wrapping mode using my texture samping. + + You must include the file <glm/glx/wrap.hpp> to get this functionality. **/ diff --git a/doc/gtcModules.doxy b/doc/gtcModules.doxy index e37e74a8..64d7f112 100644 --- a/doc/gtcModules.doxy +++ b/doc/gtcModules.doxy @@ -1,500 +1,114 @@ -/** - \defgroup gtx GLM Experimental Extensions +/*! + \defgroup gtc GLM Core Extensions \brief Functions and types that GLSL does not provide, but are useful to have. - Experimental extensions are useful functions and types, but the development of - their API and functionality is not necessarily stable. They can change substantially - between versions. Backwards compatibility is not much of an issue for them. + Core extensions differ from \ref gtx "experimental extensions" in that core extensions + are fairly stable. The API for experimental extensions is expected to change + significantly between versions. You can bring all of the extensions, core or experimental, in by including <glm/ext.hpp> Otherwise, you will have to include each extension by including a specific file. **/ -/** - \defgroup gtx_associated_min_max Associated Min/Max Experimental Extension - \ingroup gtx +/*! + \defgroup gtc_half_float Half Float Core Extension + \ingroup gtc - \brief Min and max functions that return associated values not the compared onces. + \brief Defines the half-float type, along with various typedefs for vectors and matrices. - You must include the file <glm/glx/associated_min_max.hpp> to get this functionality. + You must include <glm/glc/half_float.hpp> to get this functionality. **/ -/** - \defgroup gtx_bit Bitwise Operations Experimental Extension - \ingroup gtx +/*! + \defgroup gtc_matrix_access Matrix Access Core Extension + \ingroup gtc - \brief Allow to perform bit operations on integer values + \brief Defines functions that allow you to access rows or columns of a matrix easily. - You must include the file <glm/glx/bit.hpp> to get this functionality. + You must include <glm/glc/matrix_access.hpp> to get this functionality. **/ -/** - \defgroup gtx_closest_point Find Closest Point Experimental Extension - \ingroup gtx +/*! + \defgroup gtc_matrix_integer Integer Matrix Core Extension + \ingroup gtc - \brief Find the point on a straight line which is the closet of a point. - - You must include the file <glm/glx/closest_point.hpp> to get this functionality. + \brief Defines a number of matrices with integer types. + + You must include <glm/glc/matrix_integer.hpp> to get this functionality. **/ -/** - \defgroup gtx_color_cast Color Conversion Experimental Extension - \ingroup gtx +/*! + \defgroup gtc_matrix_inverse Matrix Inverse Core Extension + \ingroup gtc - \brief Conversion between two color types. - - You must include the file <glm/glx/color_cast.hpp> to get this functionality. + \brief Defines additional matrix inverting functions. + + You must include <glm/glc/matrix_inverse.hpp> to get this functionality. **/ -/** - \defgroup gtx_color_space RGB to HSV Conversion Experimental Extension - \ingroup gtx +/*! + \defgroup gtc_matrix_transform Matrix Transform Core Extension + \ingroup gtc - \brief Related to RGB to HSV conversions and operations. - - You must include the file <glm/glx/color_space.hpp> to get this functionality. + \brief Defines functions that generate common transformation matrices. + + The matrices generated by this extension use standard OpenGL fixed-function + conventions. For example, the lookAt function generates a transform from world + space into the specific eye space that the projective matrix functions ( + perspective, ortho, etc) are designed to expect. The OpenGL compatibility + specifications defines the particular layout of this eye space. + + You must include <glm/glc/matrix_transform.hpp> to get this functionality. **/ -/** - \defgroup gtx_color_space_YCoCg RGB to YCoCg Conversion Experimental Extension - \ingroup gtx +/*! + \defgroup gtc_quaternion Quaternion Core Extension + \ingroup gtc - \brief RGB to YCoCg conversions and operations - - You must include the file <glm/glx/color_space_YCoCg.hpp> to get this functionality. + \brief Defines a templated quaternion type and several quaternion operations. + + You must include <glm/glc/quaternion.hpp> to get this functionality. **/ -/** - \defgroup gtx_compatibility Cg and HLSL Compatibility Experimental Extension - \ingroup gtx +/*! + \defgroup gtc_type_precision Type Precision Core Extension + \ingroup gtc - \brief Provide functions to increase the compatibility with Cg and HLSL languages - - You must include the file <glm/glx/compatibility.hpp> to get this functionality. + \brief Defines specific C++-based precision types. + + \ref core_precision defines types based on GLSL's precision qualifiers. This + extension defines types based on explicitly-sized C++ data types. + + You must include the file <glm/glc/type_precision.hpp> to get this functionality. **/ -/** - \defgroup gtx_component_wise Component Wise Experimental Extension - \ingroup gtx +/*! + \defgroup gtc_type_ptr Pointer Access Core Extension + \ingroup gtc - \brief Operations between components of a type + \brief Used to get a pointer to the memory layout of a basic type. + + This extension defines an overloaded function, glm::value_ptr, which + takes any of the \ref core_template "core template types". It returns + a pointer to the memory layout of the object. Matrix types store their values + in row-major order. + + This is useful for uploading data to matrices or copying data to buffer objects. + + Example: + + \code +#include <glm/glm.hpp> +#include <glm/glc/type_ptr.hpp> +glm::vec3 aVector(3); +glm::mat4 someMatrix(1.0); - You must include the file <glm/glx/component_wise.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_epsilon Epsilon Comparison Experimental Extension - \ingroup gtx - - \brief Comparison functions for a user defined epsilon values. - - You must include the file <glm/glx/epsilon.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_euler_angles Matrix From Euler Angles Experimental Extension - \ingroup gtx - - \brief Build matrices from Euler angles. - - You must include the file <glm/glx/euler_angles.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_extend Position Extending Experimental Extension - \ingroup gtx - - \brief Extend a position from a source to a position at a defined length. - - You must include the file <glm/glx/extend.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_extented_min_max Extended Min Max Experimental Extension - \ingroup gtx - - \brief Min and max functions for 3 to 4 parameters. - - You must include the file <glm/glx/extented_min_max.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_fast_exponential Fast Exponentiation Experimental Extension - \ingroup gtx - - \brief Fast but less accurate implementations of exponential based functions. - - You must include the file <glm/glx/fast_exponential.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_fast_square_root Fast Square Root Experimental Extension - \ingroup gtx - - \brief Fast but less accurate implementations of square root based functions. - - You must include the file <glm/glx/fast_square_root.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_fast_trigonometry Fast Trig Experimental Extension - \ingroup gtx - - \brief Fast but less accurate implementations of trigonometric functions. - - You must include the file <glm/glx/fast_trigonometry.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_handed_coordinate_space Space Handedness Experimental Extension - \ingroup gtx - - \brief To know if a set of three basis vectors defines a right or left-handed coordinate system. - - You must include the file <glm/glx/handed_coordinate_system.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_inertia Intertial Matrix Experimental Extension - \ingroup gtx - - \brief Create inertia matrices - - You must include the file <glm/glx/inertia.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_int_10_10_10_2 Packed Integer Experimental Extension - \ingroup gtx - - \brief Add support for integer for core functions - - You must include the file <glm/glx/int_10_10_10_2.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_integer Integer Function Experimental Extension - \ingroup gtx - - \brief Add support for integer for core functions - - You must include the file <glm/glx/integer.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_intersect Intersection Test Experimental Extension - \ingroup gtx - - \brief Add intersection functions - - You must include the file <glm/glx/intersect.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_log_base Log With Base Experimental Extension - \ingroup gtx - - \brief Logarithm for any base. base can be a vector or a scalar. - - You must include the file <glm/glx/log_base.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_matrix_cross_product Cross Product Matrices Experimental Extension - \ingroup gtx - - \brief Build cross product matrices - - You must include the file <glm/glx/matrix_cross_product.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_matrix_major_storage Build Matrix Experimental Extension - \ingroup gtx - - \brief Build matrices with specific matrix order, row or column - - You must include the file <glm/glx/matrix_major_storage.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_matrix_operation Diagonal Matrix Experimental Extension - \ingroup gtx - - \brief Build diagonal matrices from vectors. - - You must include the file <glm/glx/matrix_operation.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_matrix_query Query Matrix Properties Experimental Extension - \ingroup gtx - - \brief Query to evaluate matrix properties - - You must include the file <glm/glx/matrix_query.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_mixed_product Mixed Product Experimental Extension - \ingroup gtx - - \brief Mixed product of 3 vectors. - - You must include the file <glm/glx/mixed_product.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_multiple Multiples Experimental Extension - \ingroup gtx - - \brief Find the closest number of a number multiple of other number. - - You must include the file <glm/glx/multiple.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_norm Vector Norm Experimental Extension - \ingroup gtx - - \brief Various way to compute vector norms. - - You must include the file <glm/glx/norm.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_normal Compute Normal Experimental Extension - \ingroup gtx - - \brief Compute the normal of a triangle. - - You must include the file <glm/glx/normal.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_normalize_dot Normalize Dot Product Experimental Extension - \ingroup gtx - - \brief Dot product of vectors that need to be normalize with a single square root. - - You must include the file <glm/glx/normalized_dot.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_number_precision Number Precision Experimental Extension - \ingroup gtx - - \brief Defined size types. - - You must include the file <glm/glx/number_precision.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_ocl_type OpenCL Types Experimental Extension - \ingroup gtx - - \brief OpenCL types. - - You must include the file <glm/glx/ocl_type.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_optimum_pow Optimum Pow Experimental Extension - \ingroup gtx - - \brief Integer exponentiation of power functions. - - You must include the file <glm/glx/optimum_pow.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_orthonormalize Orthonormalize Experimental Extension - \ingroup gtx - - \brief Orthonormalize matrices. - - You must include the file <glm/glx/orthonormalize.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_perpendicular Perpendicular Experimental Extension - \ingroup gtx - - \brief Perpendicular of a vector from other one - - You must include the file <glm/glx/perpendicular.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_polar_coordinates Polar Coordinates Experimental Extension - \ingroup gtx - - \brief Conversion from Euclidean space to polar space and revert. - - You must include the file <glm/glx/polar_coordinates.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_projection Projection Experimental Extension - \ingroup gtx - - \brief Projection of a vector to other one - - You must include the file <glm/glx/projection.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_quaternion Quaternion Experimental Extension - \ingroup gtx - - \brief Quaternion types and functions - - You must include the file <glm/glx/quaternion.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_random Random Experimental Extension - \ingroup gtx - - \brief Generate random number from various distribution methods - - You must include the file <glm/glx/random.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_raw_data Raw Data Experimental Extension - \ingroup gtx - - \brief Projection of a vector to other one - - You must include the file <glm/glx/raw_data.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_reciprocal Reciprocal Experimental Extension - \ingroup gtx - - \brief Define secant, cosecant and cotangent functions. - - You must include the file <glm/glx/reciprocal.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_rotate_vector Rotate Vector Experimental Extension - \ingroup gtx - - \brief Function to directly rotate a vector - - You must include the file <glm/glx/rotate_vector.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_simd_mat4 SIMD Mat4 Experimental Extension - \ingroup gtx - - \brief SIMD implementation of mat4 type. - - You must include the file <glm/glx/simd_mat4.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_simd_vec4 SIMD Vec4 Experimental Extension - \ingroup gtx - - \brief SIMD implementation of vec4 type. - - You must include the file <glm/glx/simd_vec4.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_spline Spline Experimental Extension - \ingroup gtx - - \brief Spline functions - - You must include the file <glm/glx/spline.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_string_cast String Cast Experimental Extension - \ingroup gtx - - \brief Setup strings for GLM type values - - You must include the file <glm/glx/transform.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_transform Transformation Matrices Experimental Extension - \ingroup gtx - - \brief Add transformation matrices - - You must include the file <glm/glx/transform2.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_transform2 Extra Transform Matrices Experimental Extension - \ingroup gtx - - \brief Add extra transformation matrices - - You must include the file <glm/glx/unsigned_int.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_unsigned_int Unsigned Int Experimental Extension - \ingroup gtx - - \brief Add support for unsigned integer for core functions - - You must include the file <glm/glx/unsigned_int.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_vector_access Vector Access Experimental Extension - \ingroup gtx - - \brief Function to set values to vectors - - You must include the file <glm/glx/vector_access.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_vector_angle Vector Angle Experimental Extension - \ingroup gtx - - \brief Compute angle between vectors - - You must include the file <glm/glx/vector_angle.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_vector_query Vector Query Experimental Extension - \ingroup gtx - - \brief Query informations of vector types - - You must include the file <glm/glx/vector_query.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_verbose_operator Verbose Operator Experimental Extension - \ingroup gtx - - \brief Use words to replace operators - - You must include the file <glm/glx/verbose_operator.hpp> to get this functionality. -**/ - -/** - \defgroup gtx_wrap Wrap Experimental Extension - \ingroup gtx - - \brief Wrapping mode using my texture samping. - - You must include the file <glm/glx/wrap.hpp> to get this functionality. +glUniform3fv(uniformLoc, 1, glm::value_ptr(aVector)); +glUniformMatrix4fv(uniformMatrixLoc, 1, GL_FALSE, glm::value_ptr(someMatrix)); + \endcode + + You must include the file <glm/glc/type_ptr.hpp> to get this functionality. **/ diff --git a/doc/pages.doxy b/doc/pages.doxy index cf1d9005..dd9ee1f1 100644 --- a/doc/pages.doxy +++ b/doc/pages.doxy @@ -1,89 +1,48 @@ -/** +/*! \mainpage OpenGL Mathematics - OpenGL Mathematics (GLM) is a C++ mathematics library for 3D applications based - on the OpenGL Shading Language (GLSL) specification. - - GLM provides 3D programmers with math classes and functions that are similar to - GLSL or any high level GPU programming language. The idea is to have a library - that has identical naming conventions and functionalities than GLSL so that when - developers know GLSL, they know how to use GLM. - GLM is not limited strictly to GLSL features. + OpenGL Mathematics (GLM) is a C++ mathematics library for graphics software based on the OpenGL Shading Language (GLSL) specification. + + GLM provides classes and functions designed and implemented with the same naming conventions and functionalities than GLSL so that when a programmer knows GLSL, he knows GLM as well which makes it really easy to use. + + This project isn't limited by GLSL features. An extension system, based on the GLSL extension conventions, provides extended capabilities: matrix transformations, quaternions, half-based types, random numbers, etc... + + This library works perfectly with OpenGL but it also ensures interoperability with other third party libraries and SDK. It is a good candidate for software rendering (Raytracing / Rasterisation), image processing, physic simulations and any context that requires a simple and convenient mathematics library. + + GLM is written as a platform independent library with no dependence and officially supports the following compilers: + 1. GCC 3.4 and higher + 2. LLVM 2.3 and higher + 3. Visual Studio 2005 and higher + + The source code is licenced under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT licence</a>. + + Thanks for contributing to the project by submitting tickets for bug reports and feature requests. (SF.net account required). Any feedback is welcome at glm@g-truc.net. - However, this project isn't limited by GLSL features. An extension system, based - on the GLSL extension conventions, allows extended capabilities. - - This library can be used with OpenGL but also for software rendering (Raytracing - / Rasterisation), image processing and as much contexts as a simple math library - could be used for. - - GLM is written as a platform independent library. The following compilers are - officially supported: - \li GNU GCC 3.4 and higher - \li Microsoft Visual Studio 8.0 and higher - - The source code is under the - <a href="http://www.opensource.org/licenses/mit-license.php">MIT licence</a>. - - Any feedback is welcome and can be sent to glm@g-truc.net. - - \li \subpage started - \li \subpage faq - \li \subpage issues - \li \subpage reference + \li \subpage pg_started + \li \subpage pg_advanced + \li \subpage pg_differences + \li \subpage pg_deprecated + \li \subpage pg_issues + \li \subpage pg_faq + \li \subpage pg_samples + \li \subpage pg_reference **/ -/** - \page started Getting Started +/*! + \page pg_started Getting Started \section started_compiler Compiler Setup - GLM is a header library. Therefore, it doesn't require to be built separately. All that - is necessary to use GLM is to add the GLM install path to your compiler's include - search paths. (-I option with GCC) Alternatively, you can copy the GLM files directly into your - project's source directory. - - GLM makes heavy use of C++ templates. This may significantly increase the compile - time for files that use GLM. If this is a problem for your needs, precompiled headers - are a good solution for avoiding this issue. - - \section started_core Core Features - - After initial compiler setup, all core features of GLM (core GLSL features) can be accessed - by including the glm.hpp header. The line: #include <glm/glm.hpp> is used for a typical - compiler setup. - - Note that by default there are no dependencies on external headers like gl.h, gl3.h, glu.h or - windows.h. - - \section started_swizzle Setup of Swizzle Operators - - A common feature of shader languages like GLSL is components swizzling. This involves - being able to select which components of a vector are used and in what order. For - example, "variable.x", "variable.xxy", "variable.zxyy" are examples of swizzling. - - However in GLM, swizzling operators are disabled by default. To enable swizzling the - define GLM_SWIZZLE must be defined to one of GLM_SWIZZLE_XYZW, GLM_SWIZZLE_RGBA, - GLM_SWIZZLE_STQP or GLM_SWIZZLE_FULL depending on what swizzle syntax is required. - - To enable swizzling, it is suggested that setup.hpp be included first, then custom - settings and finally glm.hpp. For - example: - - \code -#include <glm/setup.hpp> -#define GLM_SWIZZLE GLM_SWIZZLE_FULL -#include <glm/glm.hpp> - \endcode - - These custom setup lines can then be placed in a common project header or precompiled - header. - - \section started_sample Basic Use of GLM Core - - \code -#include <glm/glm.hpp> + GLM is a header only library, there is nothing to build to use it which increases its cross platform capabilities. + To use GLM, a programmer only has to include <glm/glm.hpp>. This provides all the GLSL features implemented by GLM. + + GLM makes heavy usages of C++ templates. This design may significantly increase the compile time for files that use GLM. Precompiled headers are recommended to avoid this issue. + + \section started_sample Use Sample of GLM Core + \code +#include <glm/glm.hpp> + int foo() { glm::vec4 Position = glm::vec4(glm::vec3(0.0), 1.0); @@ -94,15 +53,23 @@ int foo() } \endcode + \section started_dependencies Dependencies + + When <glm/glm.hpp> is included, GLM provides all the GLSL features it implements in C++. + + When an extension is included, all the dependent extensions will be included as well. All the extensions depend on GLM core. (<glm/glm.hpp>) + + There is no dependence with external libraries or external headers like gl.h, gl3.h, glu.h or windows.h. However, if <boost/static_assert.hpp> is included, Boost static assert will be used throughout GLM code to provide compiled time errors. + \section started_extensions GLM Extensions - GLM extends the core GLSL feature set with extensions. These extensions include: - quaternion, transformation, spline, matrix inverse, color spaces, etc. - Note that some extensions are incompatible with other extension as and may result in C++ - name collisions when used together. + GLM extends the core GLSL feature set with extensions. These extensions include: \ref gtc_quaternion "quaternion", \ref gtc_matrix_transform "transformation", \ref gtx_spline "spline", \ref gtc_matrix_inverse "matrix inverse", \ref gtx_color_space "color spaces", etc. - To use a particular extension, simply include the extension header file. All - extension features are added to the glm namespace. + Note that some extensions are incompatible with other extensions; this may result in C++ name collisions when used together. + + GLM provides two methods to use these extensions. + + This method simply requires the inclusion of the extension implementation filename. The extension features are added to the GLM namespace. \code #include <glm/glm.hpp> @@ -111,150 +78,626 @@ int foo() int foo() { glm::vec4 Position = glm::vec4(glm::vec3(0.0f), 1.0f); - glm::mat4 Model = glm::translate(1.0f, 1.0f, 1.0f); + glm::mat4 Model = glm::translate( + glm::mat4(1.0f), glm::vec3(1.0f)); glm::vec4 Transformed = Model * Position; return 0; } \endcode - - \section started_depend Dependencies - When <glm/glm.hpp> is included, GLM provides all the GLSL features it implements in C++. + \section started_interop OpenGL Interoperability - By including <glm/ext.hpp> all the features of all extensions of GLM are included. + It could be possible to implement <tt>glVertex3fv(glm::vec3(0))</tt> in C++ with the appropriate cast operator. It would result as a transparent cast in this example; however, cast operator may result in programs running with unexpected behaviors without build errors or any notification. + + The \ref gtc_type_ptr extension provides a safe solution: - When you include a specific extension, all the dependent extensions will be included as well. - All the extensions depend on GLM core. (<glm/glm.hpp>) - - GLM has no dependencies on external libraries. However, if <boost/static_assert.hpp> is - included before the GLM headers, boost::static_assert will be used all over GLM code. + \code +#include <glm/glm.hpp> +#include <glm/gtc/type_ptr.hpp> + +void foo() +{ + glm::vec4 v(0.0f); + glm::mat4 m(1.0f); + ... + glVertex3fv(glm::value_ptr(v)) + glLoadMatrixfv(glm::value_ptr(m)); +} + \endcode + + Another solution inspired by STL: + + \code +#include <glm/glm.hpp> + +void foo() +{ + glm::vec4 v(0.0f); + glm::mat4 m(1.0f); + ... + glVertex3fv(&v[0]); + glLoadMatrixfv(&m[0][0]); +} + \endcode **/ -/** - \page faq FAQ +/*! + \page pg_advanced Advaned Usage - \section faq1 Why GLM follows GLSL specification and conventions? + \section advanced_swizzle Swizzle Operators - Following GLSL conventions is a really strict policy of GLM. GLM has been designed following - the idea that everyone does its own math library with his own conventions. The idea is that + A common feature of shader languages like GLSL is components swizzling. This involves being able to select which components of a vector are used and in what order. For example, �variable.x�, �variable.xxy�, �variable.zxyy� are examples of swizzling. + + \code +vec4 A; +vec2 B; +... +B.yx = A.wy; +B = A.xx; + \endcode + + This functionally turns out to be really complicated, not to say impossible, to implement in C++ using the exact GLSL conventions. GLM provides 2 implementions this feature. + + \subsection advanced_swizzle_macro Macro implementation + + The first implementation follows the GLSL convensions accurately however it uses macros which might generates name conflicts with system headers or third party libraries so that it is disabled by default. To enable this implementation, GLM_SWIZZLE has to be defined before any inclusion of <glm/glm.hpp>. + + \code +#define GLM_SWIZZLE +#include <glm/glm.hpp> + \endcode + + This implementation can be partially enabled by defining GLM_SWIZZLE_XYZW, GLM_SWIZZLE_RGBA or GLM_SWIZZLE_STQP. Each macro only enable a set of swizzling operators. For example we can only enable x,y,z,w and s,t,q,p operators using: + + \code +#define GLM_SWIZZLE_XYZW +#define GLM_SWIZZLE_STQP +#include <glm/glm.hpp> + \endcode + + \subsection advanced_swizzle_ext Extension implementation + + A safer way to do swizzling is to use the extension GLM_GTC_swizzle. In term of functionalities, this extension is at the same level than GLSL expect that GLM support both static and dynamic swizzling where GLSL only support static swizzling. + + Static swizzling is an operation which is resolved at build time but dynamic swizzling is revolved at runtime which is more flexible but slower especially when SSE instructions are used. + + \code +#include <glm/glm.hpp> +#include <glm/gtc/swizzle.hpp> + +void foo() +{ + glm::vec4 ColorRGBA(1.0f, 0.5f, 0.0f, 1.0f); + � + // Dynamic swizzling (at run time, more flexible) + // l-value: + glm::vec4 ColorBGRA1 = + glm::swizzle(ColorRGBA, glm::B, glm::G, glm::R, glm::A); + // r-value: + glm::swizzle(ColorRGBA, glm::B, glm::G, glm::R, glm::A) = ColorRGBA; + + // Static swizzling (at build time, faster) + // l-value: + glm::vec4 ColorBGRA2 = + glm::swizzle<glm::B, glm::G, glm::R, glm::A>(ColorRGBA); + // r-value: + glm::swizzle<glm::B, glm::G, glm::R, glm::A>(ColorRGBA) = ColorRGBA; +} + \endcode + + \section advanced_notify Notification System + + GLM includes a notification system which can display some information at build time: + \li Compiler + \li Build model: 32bits or 64 bits + \li C++ version + \li Architecture: x86, SSE, AVX, etc. + \li Included extensions + \li etc. + + This system is disable by default. To enable this system, define GLM_MESSAGES before any inclusion of <glm/glm.hpp>. + + \code +#define GLM_MESSAGES +#include <glm/glm.hpp> + \endcode + + \section advanced_inline Force Inline + + To push further the software performance, a programmer can define GLM_FORCE_INLINE before any inclusion of <glm/glm.hpp> to force the compiler to inline GLM code. + + \code +#define GLM_FORCE_INLINE +#include <glm/glm.hpp> + \endcode + + \section advanced_simd SIMD Support + + GLM provides some SIMD optimizations based on compiler intrinsics. These optimizations will be automatically utilized based on the build environment. These optimizations are mainly available through extensions, \ref gtx_simd_vec4 and \ref gtx_simd_mat4. + + A programmer can restrict or force instruction sets used for these optimizations using GLM_FORCE_SSE2 or GLM_FORCE_AVX. + + A programmer can discard the use of intrinsics by defining GLM_FORCE_PURE before any inclusion of <glm/glm.hpp>. If GLM_FORCE_PURE is defined, then including a SIMD extension will generate a build error. + + \code +#define GLM_FORCE_PURE +#include <glm/glm.hpp> + \endcode + + \section advanced_compatibility Compatibility + Compilers have some language extensions that GLM will automatically take advantage of them when they are enabled. To increase cross platform compatibility and to avoid compiler extensions, a programmer can define GLM_FORCE_CXX98 before any inclusion of <glm/glm.hpp>. + + \code +#define GLM_FORCE_CXX98 +#include <glm/glm.hpp> + \endcode +**/ + +/*! + \page pg_deprecated Deprecated Function Replacements + + The OpenGL 3.0 specification deprecated some features, and most of these have been removed from the OpenGL 3.1 specfication and beyond. GLM provides some replacement functions. + + \section deprecated_opengl OpenGL Function Replacements + + <b>glRotate{f,d}:</b> + + From \ref gtc_matrix_transform. + + \code +glm::mat4 glm::rotate( + glm::mat4 const & m, + float angle, glm::vec3 const & axis); +glm::dmat4 glm::rotate( + glm::dmat4 const & m, + double angle, glm::dvec3 const & axis); + \endcode + + <b>glScale{f, d}:</b> + + From \ref gtc_matrix_transform. + + \code +glm::mat4 glm::scale( + glm::mat4 const & m, + glm::vec3 const & factors); +glm::dmat4 glm::scale( + glm::dmat4 const & m, + glm::dvec3 const & factors); + \endcode + + <b>glTranslate{f, d}:</b> + + From \ref gtc_matrix_transform. + + \code +glm::mat4 glm::translate( + glm::mat4 const & m, + glm::vec3 const & translation); +glm::dmat4 glm::translate( + glm::dmat4 const & m, + glm::dvec3 const & translation); + \endcode + + <b>glLoadIdentity:</b> + + From \ref core. + + \code +glm::mat4(1.0) or glm::mat4(); +glm::dmat4(1.0) or glm::dmat4(); + \endcode + + + <b>glMultMatrix{f, d}:</b> + + From \ref core. + + \code +glm::mat4() * glm::mat4(); +glm::dmat4() * glm::dmat4(); + \endcode + + <b>glLoadTransposeMatrix{f, d}:</b> + + From \ref core. + + \code +glm::transpose(glm::mat4()); +glm::transpose(glm::dmat4()); + \endcode + + <b>glMultTransposeMatrix{f, d}:</b> + + From \ref core. + + \code +glm::mat4() * glm::transpose(glm::mat4()); +glm::dmat4() * glm::transpose(glm::dmat4()); + \endcode + + <b>glFrustum:</b> + + From \ref gtc_matrix_transform. + + \code +glm::mat4 glm::frustum( + float left, float right, + float bottom, float top, + float zNear, float zFar); +glm::dmat4 glm::frustum( + double left, double right, + double bottom, double top, + double zNear, double zFar); + \endcode + + <b>glOrtho:</b> + + From \ref gtc_matrix_transform. + + \code +glm::mat4 glm::ortho( + float left, float right, + float bottom, float top, + float zNear, float zFar); +glm::dmat4 glm::ortho( + double left, double right, + double bottom, double top, + double zNear, double zFar); + \endcode + + \section deprecated_glu GLU Function Replacements + + <b>gluLookAt:</b> + + From \ref gtc_matrix_transform. + + \code +glm::mat4 glm::lookAt( + glm::vec3 const & eye, + glm::vec3 const & center, + glm::vec3 const & up); +glm::dmat4 glm::lookAt( + glm::dvec3 const & eye, + glm::dvec3 const & center, + glm::dvec3 const & up); + \endcode + + <b>gluOrtho2D:</b> + + From \ref gtc_matrix_transform. + + \code +glm::mat4 glm::ortho( + float left, float right, float bottom, float top); +glm::dmat4 glm::ortho( + double left, double right, double bottom, double top); + \endcode + + <b>gluPerspective:</b> + + From \ref gtc_matrix_transform. + + \code +glm::mat4 perspective( + float fovy, float aspect, float zNear, float zFar); +glm::dmat4 perspective( + double fovy, double aspect, double zNear, double zFar); + \endcode + + <b>gluProject:</b> + + From \ref gtc_matrix_transform. + + \code +glm::vec3 project( + glm::vec3 const & obj, + glm::mat4 const & model, + glm::mat4 const & proj, + glm::{i, ' ', d}vec4 const & viewport); +glm::dvec3 project( + glm::dvec3 const & obj, + glm::dmat4 const & model, + glm::dmat4 const & proj, + glm::{i, ' ', d}vec4 const & viewport); + \endcode + + <b>gluUnProject:</b> + + From \ref gtc_matrix_transform. + + \code +glm::vec3 unProject( + glm::vec3 const & win, + glm::mat4 const & model, + glm::mat4 const & proj, + glm::{i, ' '}vec4 const & viewport); +glm::dvec3 unProject( + glm::dvec3 const & win, + glm::dmat4 const & model, + glm::dmat4 const & proj, + glm::{i, ' ', d}vec4 const & viewport); + \endcode +**/ + +/*! + \page pg_differences Differences between GLSL and GLM core + + GLM comes very close to replicating GLSL, but it is not exact. Here is a list of + differences between GLM and GLSL: + + <ul> + <li> + Precision qualifiers. In GLSL numeric types can have qualifiers that define + the precision of that type. While OpenGL's GLSL ignores these qualifiers, OpenGL + ES's version of GLSL uses them. + + C++ has no language equivalent to precision qualifiers. Instead, GLM provides + a set of typedefs for each kind of precision qualifier and type. These types can + be found in \ref core_precision "their own section". + + Functions that take types tend to be templated on those types, so they can + take these qualified types just as well as the regular ones. + </li> + </ul> +**/ + +/*! + \page pg_faq FAQ + + \section faq1 Why does GLM follow GLSL specification and conventions? + + Following GLSL conventions is a really strict policy of GLM. GLM has been designed according to + the idea that everyone writes their own math library with their own conventions. The idea is that brilliant developers (the OpenGL ARB) worked together and agreed to make GLSL. Following GLSL conventions is a way to find consensus. Moreover, basically when a developer knows GLSL, he knows GLM. - \section faq2 Would it be possible to add my feature? - - YES. Every feature request could be added by submitting it here: - https://sourceforge.net/apps/trac/ogl-math/newticket - - These requests would mainly take the form of extensions and if you provide an - implementation, the feature will be added automatically in the next GLM release. - - A SourceForge.net account is required to create a ticket. - - \section faq3 Does GLM run GLSL program? + \section faq2 Does GLM run GLSL program? No, GLM is a C++ implementation of a subset of GLSL. - \section faq4 Does a GLSL compiler build GLM codes? + \section faq3 Does a GLSL compiler build GLM codes? - Not directly but it can be easy to port. However, the difference between a shader and C++ - program at software design level will probably make this idea unlikely or impossible. + No, this is not what GLM intends to do! - \section faq5 Should I use GTX extensions? + \section faq4 Should I use GTX extensions? - GTX extensions are qualified to be experimental extensions. In GLM this means that these + \ref gtx are qualified to be experimental extensions. In GLM this means that these extensions might change from version to version without restriction. In practice, it doesn't really change except time to time. GTC extensions are stabled, tested and perfectly reliable in time. Many GTX extensions extend GTC extensions and provide a way to explore features and implementations before becoming stable by a promotion as GTC extensions. This is fairly the way OpenGL features are developed through extensions. - \section faq6 Would it be possible to change GLM to do glVertex3fv(glm::vec3(0))? - - It's possible to implement such thing in C++ with the implementation of the appropriate cast - operator. In this example it's likely because it would result as a transparent cast, however, - most of the time it's really unlikely resulting of build with no error and programs running - with unexpected behaviors. - - GLM_GTC_type_ptr extension provide a safe solution: - - \code -glm::vec4 v(0); -glm::mat4 m(0); - -glVertex3fv(glm::value_ptr(v)) -glLoadMatrixfv(glm::value_ptr(m)); - \endcode - - Another solution inspired by STL: - - \code -glVertex3fv(&v[0]); -glLoadMatrixfv(&m[0][0]); - \endcode - - \section faq7 Where can I ask my questions? + \section faq5 Where can I ask my questions? A good place is the OpenGL Toolkits forum on OpenGL.org: http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=postlist&Board=10&page=1 - \section faq8 Where can I report a bug? - - Just like feature requests: - https://sourceforge.net/apps/trac/ogl-math/newticket - - A SourceForge account is required to create a ticket. - - \section faq8 Where can I find the documentation of extensions? + \section faq6 Where can I find the documentation of extensions? The Doxygen generated documentation includes a complete list of all extensions available. Explore this documentation to get a complete view of all GLM capabilities! http://glm.g-truc.net/html/index.html - \section faq9 Should I use 'using namespace glm;'? + \section faq7 Should I use 'using namespace glm;'? NO! Chances are that if 'using namespace glm;' is called, name collisions will happen because GLM is based on GLSL and GLSL is also a consensus on tokens so these tokens are probably used quite often. + + If you need frequent use of certain types, you can bring them into the global + namespace with a using declaration like this: + + /code + using glm::mat4; + + mat4 someVariable(3.0f); + /endcode + + \section faq8 Is GLM fast? + + First, GLM is mainly designed to be convenient and that's why it is written against GLSL specification. Following the 20-80 rules where 20% of the code grad 80% of the performances, GLM perfectly operates on the 80% of the code that consumes 20% of the performances. This said, on performance critical code section, the developers will probably have to write to specific code based on a specific design to reach peak performances but GLM can provides some descent performances alternatives based on approximations or SIMD instructions. **/ -/** - \page issues Known Issues +/*! + \page pg_samples Code Samples - \section issue1 Swizzle Operators + This series of samples only shows various GLM functionalities without consideration of any sort. + + \section sample1 Compute a Triangle's Normal - Enabling the swizzle operator can result in name collisions with the Win32 API. - Consequently swizzle operators are disable by default. A safer way to do swizzling is to use - the member function 'swizzle'. Future version of GLM should remove this limitation. + \code +#include <glm/glm.hpp> // vec3 normalize cross + +glm::vec3 computeNormal( +glm::vec3 const & a, +glm::vec3 const & b, +glm::vec3 const & c) +{ + return glm::normalize(glm::cross(c - a, b - a)); +} + \endcode + + A potentially faster, but less accurate alternative: - \section issue2 not Function + \code +#include <glm/glm.hpp> // vec3 cross +#include <glm/gtx/fast_square_root.hpp> // fastNormalize + +glm::vec3 computeNormal( + glm::vec3 const & a, + glm::vec3 const & b, + glm::vec3 const & c) +{ + return glm::fastNormalize(glm::cross(c - a, b - a)); +} + \endcode + + \section sample2 Matrix Transform + + \code +#include <glm/glm.hpp> //vec3, vec4, ivec4, mat4 +#include <glm/gtc/matrix_transform.hpp> //translate, rotate, scale, perspective +#include <glm/gtc/type_ptr.hpp> //value_ptr + +void setUniformMVP( + GLuint Location, + glm::vec3 const & Translate, + glm::vec3 const & Rotate) +{ + glm::mat4 Projection = + glm::perspective(45.0f, 4.0f / 3.0f, 0.1f, 100.f); + glm::mat4 ViewTranslate = glm::translate( + glm::mat4(1.0f), + Translate); + glm::mat4 ViewRotateX = glm::rotate( + ViewTranslate, + Rotate.y, glm::vec3(-1.0f, 0.0f, 0.0f)); + glm::mat4 View = glm::rotate( + ViewRotateX, + Rotate.x, glm::vec3(0.0f, 1.0f, 0.0f)); + glm::mat4 Model = glm::scale( + glm::mat4(1.0f), + glm::vec3(0.5f)); + glm::mat4 MVP = Projection * View * Model; + glUniformMatrix4fv( + Location, 1, GL_FALSE, glm::value_ptr(MVP)); +} + \endcode + + \section sample3 Vector Types + + \code +#include <glm/glm.hpp> //vec2 +#include <glm/gtc/type_precision.hpp> //hvec2, i8vec2, i32vec2 +std::size_t const VertexCount = 4; + +// Float quad geometry +std::size_t const PositionSizeF32 = VertexCount * sizeof(glm::vec2); +glm::vec2 const PositionDataF32[VertexCount] = +{ + glm::vec2(-1.0f,-1.0f), + glm::vec2( 1.0f,-1.0f), + glm::vec2( 1.0f, 1.0f), + glm::vec2(-1.0f, 1.0f) +}; + +// Half-float quad geometry +std::size_t const PositionSizeF16 = VertexCount * sizeof(glm::hvec2); +glm::hvec2 const PositionDataF16[VertexCount] = +{ + glm::hvec2(-1.0f, -1.0f), + glm::hvec2( 1.0f, -1.0f), + glm::hvec2( 1.0f, 1.0f), + glm::hvec2(-1.0f, 1.0f) +}; + +// 8 bits signed integer quad geometry +std::size_t const PositionSizeI8 = VertexCount * sizeof(glm::i8vec2); +glm::i8vec2 const PositionDataI8[VertexCount] = +{ + glm::i8vec2(-1,-1), + glm::i8vec2( 1,-1), + glm::i8vec2( 1, 1), + glm::i8vec2(-1, 1) +}; + +// 32 bits signed integer quad geometry +std::size_t const PositionSizeI32 = VertexCount * sizeof(glm::i32vec2); +glm::i32vec2 const PositionDataI32[VertexCount] = +{ + glm::i32vec2 (-1,-1), + glm::i32vec2 ( 1,-1), + glm::i32vec2 ( 1, 1), + glm::i32vec2 (-1, 1) +}; + \endcode + + \section sample4 Lighting + + \code +#include <glm/glm.hpp> // vec3 normalize reflect dot pow +#include <glm/gtx/random.hpp> // vecRand3 + +// vecRand3, generate a random and equiprobable normalized vec3 + +glm::vec3 lighting( + intersection const & Intersection, + material const & Material, + light const & Light, + glm::vec3 const & View) +{ + glm::vec3 Color = glm::vec3(0.0f); + glm::vec3 LightVertor = glm::normalize( + Light.position() - Intersection.globalPosition() + + glm::vecRand3(0.0f, Light.inaccuracy()); + + if(!shadow( + Intersection.globalPosition(), + Light.position(), + LightVertor)) + { + float Diffuse = glm::dot(Intersection.normal(), LightVector); + if(Diffuse <= 0.0f) + return Color; + if(Material.isDiffuse()) + Color += Light.color() * Material.diffuse() * Diffuse; + + if(Material.isSpecular()) + { + glm::vec3 Reflect = glm::reflect( + -LightVector, + Intersection.normal()); + float Dot = glm::dot(Reflect, View); + float Base = Dot > 0.0f ? Dot : 0.0f; + float Specular = glm::pow(Base, Material.exponent()); + Color += Material.specular() * Specular; + } + return Color; +} + \endcode + +**/ + +/*! + \page pg_issues Known Issues + + \section issue1 not Function The GLSL keyword not is also a keyword in C++. To prevent name collisions, the GLSL not function has been implemented with the name not_. - \section issue3 Half Based Types - GLM supports half float number types through the extension GLM_GTC_half_float. This - extension provides the types half, hvec*, hmat*x* and hquat*. + \section issue2 Half Based Types + GLM supports half float number types through the extension GLM_GTC_half_float. This extension provides the types half, hvec*, hmat*x* and hquat*. - Unfortunately, C++ norm doesn't support anonymous unions which limit hvec* vector - components access to x, y, z and w. + Unfortunately, C++ 98 specification doesn�t support anonymous unions which limit hvec* vector components access to x, y, z and w. - However, Visual C++ does support anonymous unions. When - GLM_USE_ANONYMOUS_UNION is define, it enables the support of all component names - (x,y,z,w ; r,g,b,a ; s,t,p,q). With GCC it will result in a build error. + However, Visual C++ does support anonymous unions if the language extensions are enabled (/Za to disable them). In this case GLM will automatically enables the support of all component names (x,y,z,w ; r,g,b,a ; s,t,p,q). + + To uniformalize the component access across types, GLM provides the define GLM_FORCE_ONLY_XYZW which will generates errors if component accesses are done using r,g,b,a or s,t,p,q. + + \code +#define GLM_FORCE_ONLY_XYZW +#include <glm/glm.hpp> + \endcode **/ -/** - \page reference References +/*! + \page pg_reference References OpenGL 4.1 core specification: - http://www.opengl.org/registry/doc/glspec41.core.20100725.pdf + http://www.opengl.org/registry/doc/glspec41.core.20100725.pdf GLSL 4.10 specification: - http://www.opengl.org/registry/doc/GLSLangSpec.4.10.6.clean.pdf + http://www.opengl.org/registry/doc/GLSLangSpec.4.10.6.clean.pdf + + GLU 1.3 specification: + http://www.opengl.org/documentation/specs/glu/glu1_3.pdf GLM HEAD snapshot: - http://ogl-math.git.sourceforge.net/git/gitweb.cgi?p=ogl-math/ogl-math;a=snapshot;h=HEAD;sf=tgz + http://ogl-math.git.sourceforge.net/git/gitweb.cgi?p=ogl-math/ogl-math;a=snapshot;h=HEAD;sf=tgz GLM Trac, for bug report and feature request: https://sourceforge.net/apps/trac/ogl-math @@ -263,6 +706,9 @@ glLoadMatrixfv(&m[0][0]); http://glm.g-truc.net G-Truc Creation page: - http://www.g-truc.net/project-0016.html + http://www.g-truc.net/project-0016.html + + The OpenGL Toolkits forum to ask questions about GLM: + http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=postlist&Board=10&page=1 **/ From fc7b32d433ad1ae35da2484d3e4c4842eddfc657 Mon Sep 17 00:00:00 2001 From: Christophe Riccio <g.truc.creation@gmail.com> Date: Mon, 7 Feb 2011 12:38:24 +0000 Subject: [PATCH 04/22] Ticket #39 --- doc/pages.doxy | 347 +++++++++++++++++-------------------------------- 1 file changed, 120 insertions(+), 227 deletions(-) diff --git a/doc/pages.doxy b/doc/pages.doxy index dd9ee1f1..cdecc442 100644 --- a/doc/pages.doxy +++ b/doc/pages.doxy @@ -9,6 +9,11 @@ This library works perfectly with OpenGL but it also ensures interoperability with other third party libraries and SDK. It is a good candidate for software rendering (Raytracing / Rasterisation), image processing, physic simulations and any context that requires a simple and convenient mathematics library. + \note The Doxygen-generated documentation will often state that a type or function + is defined in a namespace that is a child of the \link glm glm \endlink namespace. + Please ignore this; you can access all publicly available types as direct children + of the glm namespace. + GLM is written as a platform independent library with no dependence and officially supports the following compilers: 1. GCC 3.4 and higher 2. LLVM 2.3 and higher @@ -53,23 +58,33 @@ int foo() } \endcode - \section started_dependencies Dependencies + \section started_structure Library Structure - When <glm/glm.hpp> is included, GLM provides all the GLSL features it implements in C++. - - When an extension is included, all the dependent extensions will be included as well. All the extensions depend on GLM core. (<glm/glm.hpp>) - - There is no dependence with external libraries or external headers like gl.h, gl3.h, glu.h or windows.h. However, if <boost/static_assert.hpp> is included, Boost static assert will be used throughout GLM code to provide compiled time errors. + GLM is arranged in 3 distinct segments. These are the GLM core, + core extensions, and experimental extensions. + + The \ref core "GLM core" represents only what GLSL's core provides in terms of types and functions + (to the best of GLM's ability to replicate them). All that is needed to use the core + is to <tt>#include <glm/glm.hpp></tt>. + + \ref gtc "Core extensions" are sets of functions and types that add onto the core. + These are considered reasonably stable, with their APIs not changing much between + versions. Each core extension is included with a separated header file include. All + of the core extensions are in the "glm/glc" directory. + + \ref gtx "Experimental extensions" are sets of functions and types that add onto the + core. Unlike core extensions, their APIs are not considered particularly stable, which + is why they are "experimental". All of the experimental extensions are in the + "glm/gtx" directory. Like core extensions, each experimental extension is included + with a separate header file. + + If you want to use all extensions by default, you may <tt>#include <glm/ext.hpp></tt>. + This includes all extensions, core and experimental. + + All of GLM is defined as direct children of the glm namespace, including extensions. Note that some extensions are incompatible with other extensions; this may result in C++ name collisions when used together. - \section started_extensions GLM Extensions - - GLM extends the core GLSL feature set with extensions. These extensions include: \ref gtc_quaternion "quaternion", \ref gtc_matrix_transform "transformation", \ref gtx_spline "spline", \ref gtc_matrix_inverse "matrix inverse", \ref gtx_color_space "color spaces", etc. - - Note that some extensions are incompatible with other extensions; this may result in C++ name collisions when used together. - - GLM provides two methods to use these extensions. - - This method simply requires the inclusion of the extension implementation filename. The extension features are added to the GLM namespace. + To use a particular extension, simply include the extension header file. All + extension features are added to the glm namespace. \code #include <glm/glm.hpp> @@ -79,46 +94,66 @@ int foo() { glm::vec4 Position = glm::vec4(glm::vec3(0.0f), 1.0f); glm::mat4 Model = glm::translate( - glm::mat4(1.0f), glm::vec3(1.0f)); + glm::mat4(1.0f), glm::vec3(1.0f)); glm::vec4 Transformed = Model * Position; return 0; } \endcode + \section started_dependencies Dependencies + + When <glm/glm.hpp> is included, GLM provides all the GLSL features it implements in C++. + + When an extension is included, all the dependent extensions will be included as well. All the extensions depend on GLM core. (<glm/glm.hpp>) + + There is no dependence with external libraries or external headers like gl.h, gl3.h, glu.h or windows.h. However, if <boost/static_assert.hpp> is included, Boost static assert will be used throughout GLM code to provide compiled time errors. + \section started_interop OpenGL Interoperability - It could be possible to implement <tt>glVertex3fv(glm::vec3(0))</tt> in C++ with the appropriate cast operator. It would result as a transparent cast in this example; however, cast operator may result in programs running with unexpected behaviors without build errors or any notification. - - The \ref gtc_type_ptr extension provides a safe solution: + It is often useful to get a vector type as an array of its base type. For example, the + OpenGL function <tt>glUniform3fv()</tt> takes an array instead of 3 individual values. + If the vector and matrix types were simple arrays, then one could pass them to the function + like so: <tt>glUniform3fv(loc, 1, glm::vec3(0))</tt>. However, this is not the case; + the vector and matrix types are C++ classes, not arrays. + Instead, GLM provides a mechanism to get the contents of a vector or matrix as + an array pointer. The \ref gtc_type_ptr extension provides this ability. + \code #include <glm/glm.hpp> #include <glm/gtc/type_ptr.hpp> -void foo() +void BindUniforms(GLuint uniVec, GLuint uniMat) { glm::vec4 v(0.0f); glm::mat4 m(1.0f); ... - glVertex3fv(glm::value_ptr(v)) - glLoadMatrixfv(glm::value_ptr(m)); + glUniform3fv(uniVec, 1, glm::value_ptr(v)); + glUniformMatrix4fv(uniMat, 1, GL_FALSE, glm::value_ptr(m)); } \endcode + + Notice that all matrix types are <em>column-major</em> rather than row-major. Hence the need to pass GL_FALSE to glUniformMatrix4fv. - Another solution inspired by STL: + Alternatively, one can simply dereference the first element of the type. \code #include <glm/glm.hpp> -void foo() +void BindUniforms(GLuint uniVec, GLuint uniMat) { glm::vec4 v(0.0f); glm::mat4 m(1.0f); ... - glVertex3fv(&v[0]); - glLoadMatrixfv(&m[0][0]); + glUniform3fv(uniVec, 1, glm::value_ptr(&v[0])); + glUniformMatrix4fv(uniMat, 1, GL_FALSE, &m[0][0]); } \endcode + + As you can see, this requires dereferencing the very first basic type of the object, not merely the first element. The [] operator on the matrix type returns a column vector; one must then access the first element of that column vector to get a pointer to the basic type. + + \note This operation could have been built into the base vector and matrix types and performed with a cast operator. However, this has some downsides. Implicit casts + can cause unexpected and unwanted behavior. **/ /*! @@ -126,7 +161,7 @@ void foo() \section advanced_swizzle Swizzle Operators - A common feature of shader languages like GLSL is components swizzling. This involves being able to select which components of a vector are used and in what order. For example, �variable.x�, �variable.xxy�, �variable.zxyy� are examples of swizzling. + A common feature of shader languages like GLSL is components swizzling. This involves being able to select which components of a vector are used and in what order. For example, "variable.x", "variable.xxy", "variable.zxyy" are examples of swizzling. \code vec4 A; @@ -136,11 +171,11 @@ B.yx = A.wy; B = A.xx; \endcode - This functionally turns out to be really complicated, not to say impossible, to implement in C++ using the exact GLSL conventions. GLM provides 2 implementions this feature. + This functionally turns out to be really complicated to implement in C++ using the exact GLSL conventions. GLM provides 2 implementions this feature. \subsection advanced_swizzle_macro Macro implementation - The first implementation follows the GLSL convensions accurately however it uses macros which might generates name conflicts with system headers or third party libraries so that it is disabled by default. To enable this implementation, GLM_SWIZZLE has to be defined before any inclusion of <glm/glm.hpp>. + The first implementation follows the GLSL convensions accurately. It uses macros to achieve this, which might generates name conflicts with system headers or third party libraries. Therefore, it is disabled by default. To enable this implementation, GLM_SWIZZLE must be defined before any inclusion of <glm/glm.hpp>. \code #define GLM_SWIZZLE @@ -157,9 +192,9 @@ B = A.xx; \subsection advanced_swizzle_ext Extension implementation - A safer way to do swizzling is to use the extension GLM_GTC_swizzle. In term of functionalities, this extension is at the same level than GLSL expect that GLM support both static and dynamic swizzling where GLSL only support static swizzling. + A safer way to do swizzling is to use the <glm/gtc/swizzle.hpp> extension. This extension provides the GLSL functionality, but uses a different syntax for it. However, the swizzle extension also provides dynamic swizzling. - Static swizzling is an operation which is resolved at build time but dynamic swizzling is revolved at runtime which is more flexible but slower especially when SSE instructions are used. + Static swizzling is resovled at compile-time. The swizzle mask ".xzyy" is as fixed as the type of a particular variable. Dynamic swizzling is resolved at runtime via function calls. Dynamic swizzling is more flexible, since one can choose the swizzle mask at runtime, but it runs slower. This performance issue is enhanced when \ref advanced_simd "SIMD instructions" are used. \code #include <glm/glm.hpp> @@ -168,7 +203,7 @@ B = A.xx; void foo() { glm::vec4 ColorRGBA(1.0f, 0.5f, 0.0f, 1.0f); - � + ... // Dynamic swizzling (at run time, more flexible) // l-value: glm::vec4 ColorBGRA1 = @@ -204,16 +239,16 @@ void foo() \section advanced_inline Force Inline - To push further the software performance, a programmer can define GLM_FORCE_INLINE before any inclusion of <glm/glm.hpp> to force the compiler to inline GLM code. + GLM's functions are defined in headers, so they are defined with C++'s "inline" delcaration. This does not require the compiler to inline them, however. If you want to force the compiler to inline the function, using whatever capabilities that the compiler provides to do so, you can define GLM_FORCE_INLINE before any inclusion of <glm/glm.hpp>. \code #define GLM_FORCE_INLINE #include <glm/glm.hpp> \endcode - + \section advanced_simd SIMD Support - GLM provides some SIMD optimizations based on compiler intrinsics. These optimizations will be automatically utilized based on the build environment. These optimizations are mainly available through extensions, \ref gtx_simd_vec4 and \ref gtx_simd_mat4. + GLM provides some SIMD optimizations based on compiler intrinsics. These optimizations will be automatically utilized based on the build environment. These optimizations are mainly available through the extensions \ref gtx_simd_vec4 and \ref gtx_simd_mat4. A programmer can restrict or force instruction sets used for these optimizations using GLM_FORCE_SSE2 or GLM_FORCE_AVX. @@ -225,7 +260,7 @@ void foo() \endcode \section advanced_compatibility Compatibility - Compilers have some language extensions that GLM will automatically take advantage of them when they are enabled. To increase cross platform compatibility and to avoid compiler extensions, a programmer can define GLM_FORCE_CXX98 before any inclusion of <glm/glm.hpp>. + Compilers have some language extensions that GLM will automatically take advantage of them when they are enabled. The #define GLM_FORCE_CXX98 can switch off these extensions, forcing GLM to operate on pure C++98. \code #define GLM_FORCE_CXX98 @@ -236,188 +271,45 @@ void foo() /*! \page pg_deprecated Deprecated Function Replacements - The OpenGL 3.0 specification deprecated some features, and most of these have been removed from the OpenGL 3.1 specfication and beyond. GLM provides some replacement functions. + The OpenGL 3.0 specification deprecated some features, and most of these have been removed from the OpenGL 3.1 specfication and beyond. GLM provides some replacement functions. Many of these functions come from the \ref gtc_matrix_transform extension. \section deprecated_opengl OpenGL Function Replacements - <b>glRotate{f,d}:</b> + <dl> + <dt>glRotate[fd]</dt> + <dd>\link glm::gtc::matrix_transform::rotate glm::rotate \endlink</dd> + <dt>glScale[fd]</dt> + <dd>\link glm::gtc::matrix_transform::scale glm::scale \endlink</dd> + <dt>glTranslate[fd]</dt> + <dd>\link glm::gtc::matrix_transform::translate glm::translate \endlink</dd> + <dt>glLoadIdentity</dt> + <dd>The default constructor of all matrix types creates an identity matrix.</dd> + <dt>glMultMatrix[fd]</dt> + <dd>Per the GLSL specification, the multiplication operator is overloaded for all matrix types. Multiplying two matrices together will perform matrix multiplication.</dd> + <dt>glLoadTransposeMatrix[fd]</dt> + <dd>\link glm::core::function::matrix::transpose glm::transpose \endlink</dd> + <dt>glMultTransposeMatrix</dt> + <dd>Combine the last two.</dd> + <dt>glFrustum</dt> + <dd>\link glm::gtc::matrix_transform::frustum glm::frustum \endlink</dd> + <dt>glOrtho</dt> + <dd>\link glm::gtc::matrix_transform::ortho glm::ortho \endlink</dd> + <dt>gluLookAt</dt> + <dd>\link glm::gtc::matrix_transform::lookAt glm::lookAt \endlink</dd> + </dl> - From \ref gtc_matrix_transform. - - \code -glm::mat4 glm::rotate( - glm::mat4 const & m, - float angle, glm::vec3 const & axis); -glm::dmat4 glm::rotate( - glm::dmat4 const & m, - double angle, glm::dvec3 const & axis); - \endcode - - <b>glScale{f, d}:</b> - - From \ref gtc_matrix_transform. - - \code -glm::mat4 glm::scale( - glm::mat4 const & m, - glm::vec3 const & factors); -glm::dmat4 glm::scale( - glm::dmat4 const & m, - glm::dvec3 const & factors); - \endcode - - <b>glTranslate{f, d}:</b> - - From \ref gtc_matrix_transform. - - \code -glm::mat4 glm::translate( - glm::mat4 const & m, - glm::vec3 const & translation); -glm::dmat4 glm::translate( - glm::dmat4 const & m, - glm::dvec3 const & translation); - \endcode - - <b>glLoadIdentity:</b> - - From \ref core. - - \code -glm::mat4(1.0) or glm::mat4(); -glm::dmat4(1.0) or glm::dmat4(); - \endcode - - - <b>glMultMatrix{f, d}:</b> - - From \ref core. - - \code -glm::mat4() * glm::mat4(); -glm::dmat4() * glm::dmat4(); - \endcode - - <b>glLoadTransposeMatrix{f, d}:</b> - - From \ref core. - - \code -glm::transpose(glm::mat4()); -glm::transpose(glm::dmat4()); - \endcode - - <b>glMultTransposeMatrix{f, d}:</b> - - From \ref core. - - \code -glm::mat4() * glm::transpose(glm::mat4()); -glm::dmat4() * glm::transpose(glm::dmat4()); - \endcode - - <b>glFrustum:</b> - - From \ref gtc_matrix_transform. - - \code -glm::mat4 glm::frustum( - float left, float right, - float bottom, float top, - float zNear, float zFar); -glm::dmat4 glm::frustum( - double left, double right, - double bottom, double top, - double zNear, double zFar); - \endcode - - <b>glOrtho:</b> - - From \ref gtc_matrix_transform. - - \code -glm::mat4 glm::ortho( - float left, float right, - float bottom, float top, - float zNear, float zFar); -glm::dmat4 glm::ortho( - double left, double right, - double bottom, double top, - double zNear, double zFar); - \endcode - \section deprecated_glu GLU Function Replacements - <b>gluLookAt:</b> - - From \ref gtc_matrix_transform. - - \code -glm::mat4 glm::lookAt( - glm::vec3 const & eye, - glm::vec3 const & center, - glm::vec3 const & up); -glm::dmat4 glm::lookAt( - glm::dvec3 const & eye, - glm::dvec3 const & center, - glm::dvec3 const & up); - \endcode - - <b>gluOrtho2D:</b> - - From \ref gtc_matrix_transform. - - \code -glm::mat4 glm::ortho( - float left, float right, float bottom, float top); -glm::dmat4 glm::ortho( - double left, double right, double bottom, double top); - \endcode - - <b>gluPerspective:</b> - - From \ref gtc_matrix_transform. - - \code -glm::mat4 perspective( - float fovy, float aspect, float zNear, float zFar); -glm::dmat4 perspective( - double fovy, double aspect, double zNear, double zFar); - \endcode - - <b>gluProject:</b> - - From \ref gtc_matrix_transform. - - \code -glm::vec3 project( - glm::vec3 const & obj, - glm::mat4 const & model, - glm::mat4 const & proj, - glm::{i, ' ', d}vec4 const & viewport); -glm::dvec3 project( - glm::dvec3 const & obj, - glm::dmat4 const & model, - glm::dmat4 const & proj, - glm::{i, ' ', d}vec4 const & viewport); - \endcode - - <b>gluUnProject:</b> - - From \ref gtc_matrix_transform. - - \code -glm::vec3 unProject( - glm::vec3 const & win, - glm::mat4 const & model, - glm::mat4 const & proj, - glm::{i, ' '}vec4 const & viewport); -glm::dvec3 unProject( - glm::dvec3 const & win, - glm::dmat4 const & model, - glm::dmat4 const & proj, - glm::{i, ' ', d}vec4 const & viewport); - \endcode + <dl> + <dt>gluOrtho2D</dt> + <dd>\link glm::gtc::matrix_transform::ortho glm::ortho \endlink</dd> + <dt>gluPerspective</dt> + <dd>\link glm::gtc::matrix_transform::perspective glm::perspective \endlink</dd> + <dt>gluProject</dt> + <dd>\link glm::gtc::matrix_transform::project glm::project \endlink</dd> + <dt>gluUnProject</dt> + <dd>\link glm::gtc::matrix_transform::unProject glm::unProject \endlink</dd> + </dl> **/ /*! @@ -453,7 +345,7 @@ glm::dvec3 unProject( GLSL conventions is a way to find consensus. Moreover, basically when a developer knows GLSL, he knows GLM. - \section faq2 Does GLM run GLSL program? + \section faq2 Does GLM run GLSL programs? No, GLM is a C++ implementation of a subset of GLSL. @@ -463,12 +355,9 @@ glm::dvec3 unProject( \section faq4 Should I use GTX extensions? - \ref gtx are qualified to be experimental extensions. In GLM this means that these - extensions might change from version to version without restriction. In practice, it doesn't - really change except time to time. GTC extensions are stabled, tested and perfectly reliable - in time. Many GTX extensions extend GTC extensions and provide a way to explore features - and implementations before becoming stable by a promotion as GTC extensions. This is - fairly the way OpenGL features are developed through extensions. + \ref gtx are experimental. In GLM this means that these extensions might change from version to version without restriction. In practice, it doesn't really change except time to time. GTC extensions are stabled, tested and perfectly reliable in time. Many GTX extensions extend GTC extensions and provide a way to explore features and implementations before becoming stable by a promotion as GTC extensions. This is similar to how OpenGL extensions can be EXT or ARB extensions before becoming core functionality. + + In short, if you use a GTX extension, the API is much more likely to change from version to version than if you don't. But you should not feel too uncomfortable about using them. \section faq5 Where can I ask my questions? @@ -483,12 +372,10 @@ glm::dvec3 unProject( \section faq7 Should I use 'using namespace glm;'? - NO! Chances are that if 'using namespace glm;' is called, name collisions will happen - because GLM is based on GLSL and GLSL is also a consensus on tokens so these tokens are - probably used quite often. + This is unwise. There is every chance that are that if 'using namespace glm;' is called, name collisions will happen. GLSL names for functions are fairly generic, so it is entirely likely that there is another function called, for example, \link glm::sqrt sqrt \endlink. - If you need frequent use of certain types, you can bring them into the global - namespace with a using declaration like this: + If you need frequent use of particular types, you can bring them into the global + namespace with a 'using' declaration like this: /code using glm::mat4; @@ -498,14 +385,20 @@ glm::dvec3 unProject( \section faq8 Is GLM fast? - First, GLM is mainly designed to be convenient and that's why it is written against GLSL specification. Following the 20-80 rules where 20% of the code grad 80% of the performances, GLM perfectly operates on the 80% of the code that consumes 20% of the performances. This said, on performance critical code section, the developers will probably have to write to specific code based on a specific design to reach peak performances but GLM can provides some descent performances alternatives based on approximations or SIMD instructions. + GLM is mainly designed to be convenient; that's why it is written against GLSL specification. + + The <a href="http://en.wikipedia.org/wiki/Pareto_principle">80-20</a> rule suggests that 80% of a program's performance comes from 20% of its code. Therefore, one must first identify which 20% of the code is impacting the performance. + + In general, if one identifies certain math code to be a performance bottleneck, the only way to solve this is to write specialized code for those particular math needs. So no canned library solution would be suitable. + + That being said, GLM can provides some descent performances alternatives based on approximations or SIMD instructions. **/ /*! \page pg_samples Code Samples - This series of samples only shows various GLM functionalities without consideration of any sort. - + This series of samples only shows various GLM functionality. + \section sample1 Compute a Triangle's Normal \code From 7b0264fffa31c82550aaec44543ae3c4241e0e31 Mon Sep 17 00:00:00 2001 From: Christophe Riccio <g.truc.creation@gmail.com> Date: Mon, 7 Feb 2011 13:19:13 +0000 Subject: [PATCH 05/22] Updated doxygen, GLM version --- doc/doxyfile | 284 ++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 202 insertions(+), 82 deletions(-) diff --git a/doc/doxyfile b/doc/doxyfile index 128e5113..5f25b83a 100644 --- a/doc/doxyfile +++ b/doc/doxyfile @@ -1,4 +1,4 @@ -# Doxyfile 1.6.2 +# Doxyfile 1.7.3 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project @@ -31,7 +31,20 @@ PROJECT_NAME = GLM # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = "Version 0.9.0" +PROJECT_NUMBER = "Version 0.9.1" + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer +# a quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify an logo or icon that is +# included in the documentation. The maximum height of the logo should not +# exceed 55 pixels and the maximum width should not exceed 200 pixels. +# Doxygen will copy the logo to the output directory. + +PROJECT_LOGO = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. @@ -57,7 +70,7 @@ CREATE_SUBDIRS = NO # Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, # Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English # messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, -# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, +# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, # Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. OUTPUT_LANGUAGE = English @@ -136,7 +149,7 @@ STRIP_FROM_PATH = "C:/Documents and Settings/Groove/ " STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems +# (but less readable) file names. This can be useful if your file system # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = YES @@ -217,15 +230,15 @@ OPTIMIZE_FOR_FORTRAN = NO OPTIMIZE_OUTPUT_VHDL = NO -# Doxygen selects the parser to use depending on the extension of the files it parses. -# With this tag you can assign which parser to use for a given extension. -# Doxygen has a built-in mapping, but you can override or extend it using this tag. -# The format is ext=language, where ext is a file extension, and language is one of -# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, -# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat -# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), -# use: inc=Fortran f=C. Note that for custom extensions you also need to set -# FILE_PATTERNS otherwise the files are not read by doxygen. +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given extension. +# Doxygen has a built-in mapping, but you can override or extend it using this +# tag. The format is ext=language, where ext is a file extension, and language +# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, +# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make +# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C +# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions +# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. EXTENSION_MAPPING = @@ -233,7 +246,7 @@ EXTENSION_MAPPING = # to include (a tag file for) the STL sources as input, then you should # set this tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also make the inheritance and collaboration +# func(std::string) {}). This also makes the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. BUILTIN_STL_SUPPORT = NO @@ -251,7 +264,7 @@ SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate getter # and setter methods for a property. Setting this option to YES (the default) -# will make doxygen to replace the get and set methods by a property in the +# will make doxygen replace the get and set methods by a property in the # documentation. This will only work if the methods are indeed getting or # setting a simple type. If this is not the case, or you want to show the # methods anyway, you should set this option to NO. @@ -289,10 +302,10 @@ TYPEDEF_HIDES_STRUCT = NO # For small to medium size projects (<1000 input files) the default value is # probably good enough. For larger projects a too small cache size can cause # doxygen to be busy swapping symbols to and from disk most of the time -# causing a significant performance penality. +# causing a significant performance penalty. # If the system has enough physical memory increasing the cache will improve the # performance by keeping more symbols in memory. Note that the value works on -# a logarithmic scale so increasing the size by one will rougly double the +# a logarithmic scale so increasing the size by one will roughly double the # memory usage. The cache size is given by this formula: # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, # corresponding to a cache size of 2^16 = 65536 symbols @@ -337,7 +350,7 @@ EXTRACT_LOCAL_METHODS = NO # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base # name of the file that contains the anonymous namespace. By default -# anonymous namespace are hidden. +# anonymous namespaces are hidden. EXTRACT_ANON_NSPACES = NO @@ -422,12 +435,12 @@ SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = YES -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen -# will sort the (brief and detailed) documentation of class members so that -# constructors and destructors are listed first. If set to NO (the default) -# the constructors will appear in the respective orders defined by -# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. -# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen +# will sort the (brief and detailed) documentation of class members so that +# constructors and destructors are listed first. If set to NO (the default) +# the constructors will appear in the respective orders defined by +# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. +# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO # and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. SORT_MEMBERS_CTORS_1ST = NO @@ -448,6 +461,15 @@ SORT_GROUP_NAMES = NO SORT_BY_SCOPE_NAME = YES +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to +# do proper type resolution of all parameters of a function it will reject a +# match between the prototype and the implementation of a member function even +# if there is only one candidate or it is obvious which candidate to choose +# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen +# will still accept a match between prototype and implementation in such cases. + +STRICT_PROTO_MATCHING = NO + # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. @@ -478,10 +500,10 @@ GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in +# the initial value of a variable or macro consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the +# The appearance of the initializer of individual variables and macros in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. @@ -521,12 +543,12 @@ SHOW_NAMESPACES = YES FILE_VERSION_FILTER = -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by -# doxygen. The layout file controls the global structure of the generated output files -# in an output format independent way. The create the layout file that represents -# doxygen's defaults, run doxygen with the -l option. You can optionally specify a -# file name after the option, if omitted DoxygenLayout.xml will be used as the name -# of the layout file. +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. The create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. +# You can optionally specify a file name after the option, if omitted +# DoxygenLayout.xml will be used as the name of the layout file. LAYOUT_FILE = @@ -558,7 +580,7 @@ WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES -# This WARN_NO_PARAMDOC option can be abled to get warnings for +# The WARN_NO_PARAMDOC option can be enabled to get warnings for # functions that are documented, but have no documentation for their parameters # or return value. If set to NO (the default) doxygen will only warn about # wrong or incomplete parameter documentation, but not about the absence of @@ -590,7 +612,8 @@ WARN_LOGFILE = # directories like "/usr/src/myproject". Separate the files or directories # with spaces. -INPUT = ../glm . +INPUT = ../glm \ + . # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is @@ -604,10 +627,12 @@ INPUT_ENCODING = UTF-8 # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 +# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh +# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py +# *.f90 *.f *.for *.vhd *.vhdl -FILE_PATTERNS = *.hpp *.doxy +FILE_PATTERNS = *.hpp \ + *.doxy # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. @@ -622,7 +647,7 @@ RECURSIVE = YES EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix filesystem feature) are excluded +# directories that are symbolic links (a Unix file system feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO @@ -683,8 +708,8 @@ INPUT_FILTER = # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER -# is applied to all files. +# info on how filters are used. If FILTER_PATTERNS is empty or if +# non of the patterns match the file name, INPUT_FILTER is applied. FILTER_PATTERNS = @@ -694,6 +719,14 @@ FILTER_PATTERNS = FILTER_SOURCE_FILES = NO +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) +# and it is also possible to disable source filtering for a specific pattern +# using *.ext= (so without naming a filter). This option only has effect when +# FILTER_SOURCE_FILES is enabled. + +FILTER_SOURCE_PATTERNS = + #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- @@ -814,6 +847,31 @@ HTML_FOOTER = HTML_STYLESHEET = +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. +# Doxygen will adjust the colors in the stylesheet and background images +# according to this color. Hue is specified as an angle on a colorwheel, +# see http://en.wikipedia.org/wiki/Hue for more information. +# For instance the value 0 represents red, 60 is yellow, 120 is green, +# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. +# The allowed range is 0 to 359. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of +# the colors in the HTML output. For a value of 0 the output will use +# grayscales only. A value of 255 will produce the most vivid colors. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to +# the luminance component of the colors in the HTML output. Values below +# 100 gradually make the output lighter, whereas values above 100 make +# the output darker. The value divided by 100 is the actual gamma applied, +# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, +# and 100 does not change the gamma. + +HTML_COLORSTYLE_GAMMA = 80 + # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML # page will contain the date and time when the page was generated. Setting # this to NO can help when comparing the output of multiple runs. @@ -842,7 +900,8 @@ HTML_DYNAMIC_SECTIONS = NO # directory and running "make install" will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find # it at startup. -# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. GENERATE_DOCSET = NO @@ -860,6 +919,16 @@ DOCSET_FEEDNAME = "Doxygen generated docs" DOCSET_BUNDLE_ID = org.doxygen.Project +# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. + +DOCSET_PUBLISHER_NAME = Publisher + # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compiled HTML help file (.chm) @@ -904,10 +973,10 @@ BINARY_TOC = NO TOC_EXPAND = NO -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER -# are set, an additional index file will be generated that can be used as input for -# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated -# HTML documentation. +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated +# that can be used as input for Qt's qhelpgenerator to generate a +# Qt Compressed Help (.qch) of the generated HTML documentation. GENERATE_QHP = NO @@ -929,20 +998,24 @@ QHP_NAMESPACE = org.doxygen.Project QHP_VIRTUAL_FOLDER = doc -# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. -# For more information please see +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to +# add. For more information please see # http://doc.trolltech.com/qthelpproject.html#custom-filters QHP_CUST_FILTER_NAME = -# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see -# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>. +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see +# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters"> +# Qt Help Project / Custom Filters</a>. QHP_CUST_FILTER_ATTRS = -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's # filter section matches. -# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>. +# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes"> +# Qt Help Project / Filter Attributes</a>. QHP_SECT_FILTER_ATTRS = @@ -954,12 +1027,12 @@ QHP_SECT_FILTER_ATTRS = QHG_LOCATION = # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files -# will be generated, which together with the HTML files, form an Eclipse help +# will be generated, which together with the HTML files, form an Eclipse help # plugin. To install this plugin and make it available under the help contents # menu in Eclipse, the contents of the directory containing the HTML and XML # files needs to be copied into the plugins directory of eclipse. The name of # the directory within the plugins directory should be the same as -# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before +# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before # the help appears. GENERATE_ECLIPSEHELP = NO @@ -976,8 +1049,10 @@ ECLIPSE_DOC_ID = org.doxygen.Project DISABLE_INDEX = NO -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. +# This tag can be used to set the number of enum values (range [0,1..20]) +# that doxygen will group on one line in the generated HTML documentation. +# Note that a value of 0 will completely suppress the enum values from +# appearing in the overview section. ENUM_VALUES_PER_LINE = 4 @@ -1002,6 +1077,11 @@ USE_INLINE_TREES = NO TREEVIEW_WIDTH = 250 +# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open +# links to external symbols imported via tag files in a separate window. + +EXT_LINKS_IN_WINDOW = NO + # Use this tag to change the font size of Latex formulas included # as images in the HTML documentation. The default is 10. Note that # when you change the font size after a successful doxygen run you need @@ -1010,22 +1090,50 @@ TREEVIEW_WIDTH = 250 FORMULA_FONTSIZE = 10 -# When the SEARCHENGINE tag is enabled doxygen will generate a search box +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are +# not supported properly for IE 6.0, but are supported on all modern browsers. +# Note that when changing this option you need to delete any form_*.png files +# in the HTML output before the changes have effect. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax +# (see http://www.mathjax.org) which uses client side Javascript for the +# rendering instead of using prerendered bitmaps. Use this if you do not +# have LaTeX installed or if you want to formulas look prettier in the HTML +# output. When enabled you also need to install MathJax separately and +# configure the path to it using the MATHJAX_RELPATH option. + +USE_MATHJAX = NO + +# When MathJax is enabled you need to specify the location relative to the +# HTML output directory using the MATHJAX_RELPATH option. The destination +# directory should contain the MathJax.js script. For instance, if the mathjax +# directory is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the +# mathjax.org site, so you can quickly see the result without installing +# MathJax, but it is strongly recommended to install a local copy of MathJax +# before deployment. + +MATHJAX_RELPATH = http://www.mathjax.org/mathjax + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box # for the HTML output. The underlying search engine uses javascript -# and DHTML and should work on any modern browser. Note that when using -# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets +# and DHTML and should work on any modern browser. Note that when using +# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets # (GENERATE_DOCSET) there is already a search function so this one should # typically be disabled. For large projects the javascript based search engine # can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. SEARCHENGINE = NO -# When the SERVER_BASED_SEARCH tag is enabled the search engine will be -# implemented using a PHP enabled web server instead of at the web client +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a PHP enabled web server instead of at the web client # using Javascript. Doxygen will generate the search PHP script and index -# file to put on the web server. The advantage of the server -# based approach is that it scales better to large projects and allows -# full text search. The disadvances is that it is more difficult to setup +# file to put on the web server. The advantage of the server +# based approach is that it scales better to large projects and allows +# full text search. The disadvantages are that it is more difficult to setup # and does not have live searching capabilities. SERVER_BASED_SEARCH = NO @@ -1066,7 +1174,7 @@ MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and +# by the printer. Possible values are: a4, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide @@ -1109,9 +1217,9 @@ LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO -# If LATEX_SOURCE_CODE is set to YES then doxygen will include -# source code with syntax highlighting in the LaTeX output. -# Note that which sources are shown also depends on other settings +# If LATEX_SOURCE_CODE is set to YES then doxygen will include +# source code with syntax highlighting in the LaTeX output. +# Note that which sources are shown also depends on other settings # such as SOURCE_BROWSER. LATEX_SOURCE_CODE = NO @@ -1320,15 +1428,15 @@ PREDEFINED = # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. +# Use the PREDEFINED tag if you want to use a different macro definition that +# overrules the definition found in the source code. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse -# the parser if not removed. +# doxygen's preprocessor will remove all references to function-like macros +# that are alone on a line, have an all uppercase name, and do not end with a +# semicolon, because these will confuse the parser if not removed. SKIP_FUNCTION_MACROS = YES @@ -1382,9 +1490,8 @@ PERL_PATH = /usr/bin/perl # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option is superseded by the HAVE_DOT option below. This is only a -# fallback. It is recommended to install and use dot, since it yields more -# powerful graphs. +# this option also works with HAVE_DOT disabled, but it is recommended to +# install and use dot, since it yields more powerful graphs. CLASS_DIAGRAMS = YES @@ -1410,11 +1517,18 @@ HIDE_UNDOC_RELATIONS = YES HAVE_DOT = NO -# By default doxygen will write a font called FreeSans.ttf to the output -# directory and reference it in all dot files that doxygen generates. This -# font does not include all possible unicode characters however, so when you need -# these (or just want a differently looking font) you can specify the font name -# using DOT_FONTNAME. You need need to make sure dot is able to find the font, +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is +# allowed to run in parallel. When set to 0 (the default) doxygen will +# base this on the number of processors available in the system. You can set it +# explicitly to a value larger than 0 to get control over the balance +# between CPU load and processing speed. + +DOT_NUM_THREADS = 0 + +# By default doxygen will write a font called Helvetica to the output +# directory and reference it in all dot files that doxygen generates. +# When you want a differently looking font you can specify the font name +# using DOT_FONTNAME. You need to make sure dot is able to find the font, # which can be done by putting it in a standard location or by setting the # DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory # containing the font. @@ -1494,7 +1608,7 @@ CALL_GRAPH = YES CALLER_GRAPH = YES # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. +# will generate a graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES @@ -1506,7 +1620,7 @@ GRAPHICAL_HIERARCHY = YES DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif +# generated by dot. Possible values are png, svg, gif or svg. # If left blank png will be used. DOT_IMAGE_FORMAT = png @@ -1522,6 +1636,12 @@ DOT_PATH = DOTFILE_DIRS = +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the +# \mscfile command). + +MSCFILE_DIRS = + # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of # nodes that will be shown in the graph. If the number of nodes in a graph # becomes larger than this value, doxygen will truncate the graph, which is From 7ab3d6525334992c5bf8609630f0d996390b076c Mon Sep 17 00:00:00 2001 From: Christophe Riccio <g.truc.creation@gmail.com> Date: Tue, 8 Feb 2011 16:03:45 +0000 Subject: [PATCH 06/22] Doxygen doc udpated, clean up, fixes and stuff --- doc/CMakeLists.txt | 2 +- doc/coreModules.doxy | 8 +- doc/{gtcModules.doxy => gtc.doxy} | 24 ++--- doc/{experimentalModules.doxy => gtx.doxy} | 0 doc/{doxyfile => man.doxy} | 0 doc/virtrev.doxy | 114 +++++++++++++++++++++ glm/glm.hpp | 4 +- 7 files changed, 133 insertions(+), 19 deletions(-) rename doc/{gtcModules.doxy => gtc.doxy} (78%) rename doc/{experimentalModules.doxy => gtx.doxy} (100%) rename doc/{doxyfile => man.doxy} (100%) create mode 100644 doc/virtrev.doxy diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index da40c39e..98bbb5d6 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -1,6 +1,6 @@ set(NAME glm-doc) -file(GLOB ROOT_TXT doxyfile ../*.txt) +file(GLOB ROOT_TXT doxyfile *.doxy ../*.txt) file(GLOB ROOT_CPP src/*.cpp) file(GLOB ROOT_XML src/*.xml) file(GLOB ROOT_XSL src/*.xsl) diff --git a/doc/coreModules.doxy b/doc/coreModules.doxy index d5d1b3a9..c67a45ab 100644 --- a/doc/coreModules.doxy +++ b/doc/coreModules.doxy @@ -16,9 +16,9 @@ /*! - \defgroup core_types Core GLSL Types + \defgroup core_types Core Types - \brief The standard types defined by the GLSL specification. + \brief The standard types defined by the specification. These types are all typedefs of more generalized, template types. To see the definiton of these template types, go to \ref core_template. @@ -54,9 +54,9 @@ **/ /*! - \defgroup core_funcs Core GLSL Functions + \defgroup core_funcs Core Functions - \brief The functions defined by the GLSL specification. + \brief The functions defined by the specification. \ingroup core **/ diff --git a/doc/gtcModules.doxy b/doc/gtc.doxy similarity index 78% rename from doc/gtcModules.doxy rename to doc/gtc.doxy index 64d7f112..2c1e4fc9 100644 --- a/doc/gtcModules.doxy +++ b/doc/gtc.doxy @@ -1,5 +1,5 @@ /*! - \defgroup gtc GLM Core Extensions + \defgroup gtc GTC Extensions (Stable) \brief Functions and types that GLSL does not provide, but are useful to have. @@ -7,8 +7,8 @@ are fairly stable. The API for experimental extensions is expected to change significantly between versions. - You can bring all of the extensions, core or experimental, in by - including <glm/ext.hpp> Otherwise, you will have to include each extension + Even if it's highly unrecommended, you can bring all of the extensions, by + including <glm/ext.hpp>. Otherwise, you will have to include each extension by including a specific file. **/ @@ -18,7 +18,7 @@ \brief Defines the half-float type, along with various typedefs for vectors and matrices. - You must include <glm/glc/half_float.hpp> to get this functionality. + You must include <glm/gtc/half_float.hpp> to get this functionality. **/ /*! @@ -27,7 +27,7 @@ \brief Defines functions that allow you to access rows or columns of a matrix easily. - You must include <glm/glc/matrix_access.hpp> to get this functionality. + You must include <glm/gtc/matrix_access.hpp> to get this functionality. **/ /*! @@ -36,7 +36,7 @@ \brief Defines a number of matrices with integer types. - You must include <glm/glc/matrix_integer.hpp> to get this functionality. + You must include <glm/gtc/matrix_integer.hpp> to get this functionality. **/ /*! @@ -45,7 +45,7 @@ \brief Defines additional matrix inverting functions. - You must include <glm/glc/matrix_inverse.hpp> to get this functionality. + You must include <glm/gtc/matrix_inverse.hpp> to get this functionality. **/ /*! @@ -60,7 +60,7 @@ perspective, ortho, etc) are designed to expect. The OpenGL compatibility specifications defines the particular layout of this eye space. - You must include <glm/glc/matrix_transform.hpp> to get this functionality. + You must include <glm/gtc/matrix_transform.hpp> to get this functionality. **/ /*! @@ -69,7 +69,7 @@ \brief Defines a templated quaternion type and several quaternion operations. - You must include <glm/glc/quaternion.hpp> to get this functionality. + You must include <glm/gtc/quaternion.hpp> to get this functionality. **/ /*! @@ -81,7 +81,7 @@ \ref core_precision defines types based on GLSL's precision qualifiers. This extension defines types based on explicitly-sized C++ data types. - You must include the file <glm/glc/type_precision.hpp> to get this functionality. + You must include the file <glm/gtc/type_precision.hpp> to get this functionality. **/ /*! @@ -101,7 +101,7 @@ \code #include <glm/glm.hpp> -#include <glm/glc/type_ptr.hpp> +#include <glm/gtc/type_ptr.hpp> glm::vec3 aVector(3); glm::mat4 someMatrix(1.0); @@ -109,6 +109,6 @@ glUniform3fv(uniformLoc, 1, glm::value_ptr(aVector)); glUniformMatrix4fv(uniformMatrixLoc, 1, GL_FALSE, glm::value_ptr(someMatrix)); \endcode - You must include the file <glm/glc/type_ptr.hpp> to get this functionality. + You must include the file <glm/gtc/type_ptr.hpp> to get this functionality. **/ diff --git a/doc/experimentalModules.doxy b/doc/gtx.doxy similarity index 100% rename from doc/experimentalModules.doxy rename to doc/gtx.doxy diff --git a/doc/doxyfile b/doc/man.doxy similarity index 100% rename from doc/doxyfile rename to doc/man.doxy diff --git a/doc/virtrev.doxy b/doc/virtrev.doxy new file mode 100644 index 00000000..2c1e4fc9 --- /dev/null +++ b/doc/virtrev.doxy @@ -0,0 +1,114 @@ +/*! + \defgroup gtc GTC Extensions (Stable) + + \brief Functions and types that GLSL does not provide, but are useful to have. + + Core extensions differ from \ref gtx "experimental extensions" in that core extensions + are fairly stable. The API for experimental extensions is expected to change + significantly between versions. + + Even if it's highly unrecommended, you can bring all of the extensions, by + including <glm/ext.hpp>. Otherwise, you will have to include each extension + by including a specific file. +**/ + +/*! + \defgroup gtc_half_float Half Float Core Extension + \ingroup gtc + + \brief Defines the half-float type, along with various typedefs for vectors and matrices. + + You must include <glm/gtc/half_float.hpp> to get this functionality. +**/ + +/*! + \defgroup gtc_matrix_access Matrix Access Core Extension + \ingroup gtc + + \brief Defines functions that allow you to access rows or columns of a matrix easily. + + You must include <glm/gtc/matrix_access.hpp> to get this functionality. +**/ + +/*! + \defgroup gtc_matrix_integer Integer Matrix Core Extension + \ingroup gtc + + \brief Defines a number of matrices with integer types. + + You must include <glm/gtc/matrix_integer.hpp> to get this functionality. +**/ + +/*! + \defgroup gtc_matrix_inverse Matrix Inverse Core Extension + \ingroup gtc + + \brief Defines additional matrix inverting functions. + + You must include <glm/gtc/matrix_inverse.hpp> to get this functionality. +**/ + +/*! + \defgroup gtc_matrix_transform Matrix Transform Core Extension + \ingroup gtc + + \brief Defines functions that generate common transformation matrices. + + The matrices generated by this extension use standard OpenGL fixed-function + conventions. For example, the lookAt function generates a transform from world + space into the specific eye space that the projective matrix functions ( + perspective, ortho, etc) are designed to expect. The OpenGL compatibility + specifications defines the particular layout of this eye space. + + You must include <glm/gtc/matrix_transform.hpp> to get this functionality. +**/ + +/*! + \defgroup gtc_quaternion Quaternion Core Extension + \ingroup gtc + + \brief Defines a templated quaternion type and several quaternion operations. + + You must include <glm/gtc/quaternion.hpp> to get this functionality. +**/ + +/*! + \defgroup gtc_type_precision Type Precision Core Extension + \ingroup gtc + + \brief Defines specific C++-based precision types. + + \ref core_precision defines types based on GLSL's precision qualifiers. This + extension defines types based on explicitly-sized C++ data types. + + You must include the file <glm/gtc/type_precision.hpp> to get this functionality. +**/ + +/*! + \defgroup gtc_type_ptr Pointer Access Core Extension + \ingroup gtc + + \brief Used to get a pointer to the memory layout of a basic type. + + This extension defines an overloaded function, glm::value_ptr, which + takes any of the \ref core_template "core template types". It returns + a pointer to the memory layout of the object. Matrix types store their values + in row-major order. + + This is useful for uploading data to matrices or copying data to buffer objects. + + Example: + + \code +#include <glm/glm.hpp> +#include <glm/gtc/type_ptr.hpp> +glm::vec3 aVector(3); +glm::mat4 someMatrix(1.0); + +glUniform3fv(uniformLoc, 1, glm::value_ptr(aVector)); +glUniformMatrix4fv(uniformMatrixLoc, 1, GL_FALSE, glm::value_ptr(someMatrix)); + \endcode + + You must include the file <glm/gtc/type_ptr.hpp> to get this functionality. +**/ + diff --git a/glm/glm.hpp b/glm/glm.hpp index c18da216..cc448ec5 100644 --- a/glm/glm.hpp +++ b/glm/glm.hpp @@ -22,8 +22,8 @@ //! TODO: to delete #define GLMvalType typename genType::value_type -#define GLMcolType typename genType::col_type -#define GLMrowType typename genType::row_type +//#define GLMcolType typename genType::col_type +//#define GLMrowType typename genType::row_type #include <cmath> #include <climits> From 952d472689e4a6a001c4e7e0e7ebdcb685888813 Mon Sep 17 00:00:00 2001 From: Christophe Riccio <g.truc.creation@gmail.com> Date: Tue, 8 Feb 2011 16:04:03 +0000 Subject: [PATCH 07/22] Doxygen doc udpated, clean up, fixes and stuff --- doc/gtx.doxy | 6 +++--- doc/man.doxy | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/gtx.doxy b/doc/gtx.doxy index 5f9d1dd5..f16a2849 100644 --- a/doc/gtx.doxy +++ b/doc/gtx.doxy @@ -1,5 +1,5 @@ /*! - \defgroup gtx GLM Experimental Extensions + \defgroup gtx GTX Extensions (Experimental) \brief Functions and types that GLSL does not provide, but are useful to have. @@ -7,8 +7,8 @@ their API and functionality is not necessarily stable. They can change substantially between versions. Backwards compatibility is not much of an issue for them. - You can bring all of the extensions, core or experimental, in by - including <glm/ext.hpp> Otherwise, you will have to include each extension + Even if it's highly unrecommended, you can bring all of the extensions, by + including <glm/ext.hpp>. Otherwise, you will have to include each extension by including a specific file. **/ diff --git a/doc/man.doxy b/doc/man.doxy index 5f25b83a..c7a4ddef 100644 --- a/doc/man.doxy +++ b/doc/man.doxy @@ -25,13 +25,13 @@ DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. -PROJECT_NAME = GLM +PROJECT_NAME = # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = "Version 0.9.1" +PROJECT_NUMBER = 0.9.1 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer @@ -44,7 +44,7 @@ PROJECT_BRIEF = # exceed 55 pixels and the maximum width should not exceed 200 pixels. # Doxygen will copy the logo to the output directory. -PROJECT_LOGO = +PROJECT_LOGO = D:/g-truc/git/ogl-math/doc/image/logo-mini.png # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. From 68847ff91314bfe901a82288a1d6e3ca154f0267 Mon Sep 17 00:00:00 2001 From: Christophe Riccio <g.truc.creation@gmail.com> Date: Tue, 8 Feb 2011 16:09:05 +0000 Subject: [PATCH 08/22] For doxygen doc refactoring --- doc/CMakeLists.txt | 2 +- doc/{gtc.doxy => gtcModules.doxy} | 0 doc/{gtx.doxy => gtxModules.doxy} | 0 doc/pages.doxy | 2 +- 4 files changed, 2 insertions(+), 2 deletions(-) rename doc/{gtc.doxy => gtcModules.doxy} (100%) rename doc/{gtx.doxy => gtxModules.doxy} (100%) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 98bbb5d6..cac82aee 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -1,6 +1,6 @@ set(NAME glm-doc) -file(GLOB ROOT_TXT doxyfile *.doxy ../*.txt) +file(GLOB ROOT_TXT *.doxy ../*.txt) file(GLOB ROOT_CPP src/*.cpp) file(GLOB ROOT_XML src/*.xml) file(GLOB ROOT_XSL src/*.xsl) diff --git a/doc/gtc.doxy b/doc/gtcModules.doxy similarity index 100% rename from doc/gtc.doxy rename to doc/gtcModules.doxy diff --git a/doc/gtx.doxy b/doc/gtxModules.doxy similarity index 100% rename from doc/gtx.doxy rename to doc/gtxModules.doxy diff --git a/doc/pages.doxy b/doc/pages.doxy index cdecc442..81fe6d45 100644 --- a/doc/pages.doxy +++ b/doc/pages.doxy @@ -16,7 +16,7 @@ GLM is written as a platform independent library with no dependence and officially supports the following compilers: 1. GCC 3.4 and higher - 2. LLVM 2.3 and higher + 2. LLVM 2.3 through GCC 4.2 front-end and higher 3. Visual Studio 2005 and higher The source code is licenced under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT licence</a>. From b46ece646316adf1269ea0b47835e416bf3343ba Mon Sep 17 00:00:00 2001 From: Christophe Riccio <g.truc.creation@gmail.com> Date: Tue, 8 Feb 2011 16:48:43 +0000 Subject: [PATCH 09/22] Varius typo fixes --- doc/pages.doxy | 4 ++-- doc/{virtrev.doxy => virtrevModules.doxy} | 0 2 files changed, 2 insertions(+), 2 deletions(-) rename doc/{virtrev.doxy => virtrevModules.doxy} (100%) diff --git a/doc/pages.doxy b/doc/pages.doxy index 81fe6d45..58c91d79 100644 --- a/doc/pages.doxy +++ b/doc/pages.doxy @@ -21,7 +21,7 @@ The source code is licenced under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT licence</a>. - Thanks for contributing to the project by submitting tickets for bug reports and feature requests. (SF.net account required). Any feedback is welcome at glm@g-truc.net. + Thanks for contributing to the project by <a href="https://sourceforge.net/apps/trac/ogl-math/newticket">submitting tickets for bug reports and feature requests</a>. (SF.net account required). Any feedback is welcome at glm@g-truc.net. \li \subpage pg_started \li \subpage pg_advanced @@ -70,7 +70,7 @@ int foo() \ref gtc "Core extensions" are sets of functions and types that add onto the core. These are considered reasonably stable, with their APIs not changing much between versions. Each core extension is included with a separated header file include. All - of the core extensions are in the "glm/glc" directory. + of the core extensions are in the "glm/gtc" directory. \ref gtx "Experimental extensions" are sets of functions and types that add onto the core. Unlike core extensions, their APIs are not considered particularly stable, which diff --git a/doc/virtrev.doxy b/doc/virtrevModules.doxy similarity index 100% rename from doc/virtrev.doxy rename to doc/virtrevModules.doxy From 934ecf3ddd01c9058bd897c63ce331a99f30fc54 Mon Sep 17 00:00:00 2001 From: Christophe Riccio <g.truc.creation@gmail.com> Date: Tue, 8 Feb 2011 16:49:09 +0000 Subject: [PATCH 10/22] Added virtrev doxygen doc# --- doc/virtrevModules.doxy | 112 +++------------------------------------- 1 file changed, 6 insertions(+), 106 deletions(-) diff --git a/doc/virtrevModules.doxy b/doc/virtrevModules.doxy index 2c1e4fc9..8eb4e74e 100644 --- a/doc/virtrevModules.doxy +++ b/doc/virtrevModules.doxy @@ -1,114 +1,14 @@ /*! - \defgroup gtc GTC Extensions (Stable) + \defgroup virtrev VIRTREV Extensions (Stable) - \brief Functions and types that GLSL does not provide, but are useful to have. - - Core extensions differ from \ref gtx "experimental extensions" in that core extensions - are fairly stable. The API for experimental extensions is expected to change - significantly between versions. - - Even if it's highly unrecommended, you can bring all of the extensions, by - including <glm/ext.hpp>. Otherwise, you will have to include each extension - by including a specific file. + \brief Extensions develop and maintain by Mathieu [matrem] Roumillac (http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showprofile&User=22660). **/ /*! - \defgroup gtc_half_float Half Float Core Extension - \ingroup gtc + \defgroup virtrev_xstream xml like output + \ingroup virtrev - \brief Defines the half-float type, along with various typedefs for vectors and matrices. + \brief Streaming vector and matrix in a xml way. - You must include <glm/gtc/half_float.hpp> to get this functionality. + Include <glm/virtrev/xstream.hpp> for this functionality. **/ - -/*! - \defgroup gtc_matrix_access Matrix Access Core Extension - \ingroup gtc - - \brief Defines functions that allow you to access rows or columns of a matrix easily. - - You must include <glm/gtc/matrix_access.hpp> to get this functionality. -**/ - -/*! - \defgroup gtc_matrix_integer Integer Matrix Core Extension - \ingroup gtc - - \brief Defines a number of matrices with integer types. - - You must include <glm/gtc/matrix_integer.hpp> to get this functionality. -**/ - -/*! - \defgroup gtc_matrix_inverse Matrix Inverse Core Extension - \ingroup gtc - - \brief Defines additional matrix inverting functions. - - You must include <glm/gtc/matrix_inverse.hpp> to get this functionality. -**/ - -/*! - \defgroup gtc_matrix_transform Matrix Transform Core Extension - \ingroup gtc - - \brief Defines functions that generate common transformation matrices. - - The matrices generated by this extension use standard OpenGL fixed-function - conventions. For example, the lookAt function generates a transform from world - space into the specific eye space that the projective matrix functions ( - perspective, ortho, etc) are designed to expect. The OpenGL compatibility - specifications defines the particular layout of this eye space. - - You must include <glm/gtc/matrix_transform.hpp> to get this functionality. -**/ - -/*! - \defgroup gtc_quaternion Quaternion Core Extension - \ingroup gtc - - \brief Defines a templated quaternion type and several quaternion operations. - - You must include <glm/gtc/quaternion.hpp> to get this functionality. -**/ - -/*! - \defgroup gtc_type_precision Type Precision Core Extension - \ingroup gtc - - \brief Defines specific C++-based precision types. - - \ref core_precision defines types based on GLSL's precision qualifiers. This - extension defines types based on explicitly-sized C++ data types. - - You must include the file <glm/gtc/type_precision.hpp> to get this functionality. -**/ - -/*! - \defgroup gtc_type_ptr Pointer Access Core Extension - \ingroup gtc - - \brief Used to get a pointer to the memory layout of a basic type. - - This extension defines an overloaded function, glm::value_ptr, which - takes any of the \ref core_template "core template types". It returns - a pointer to the memory layout of the object. Matrix types store their values - in row-major order. - - This is useful for uploading data to matrices or copying data to buffer objects. - - Example: - - \code -#include <glm/glm.hpp> -#include <glm/gtc/type_ptr.hpp> -glm::vec3 aVector(3); -glm::mat4 someMatrix(1.0); - -glUniform3fv(uniformLoc, 1, glm::value_ptr(aVector)); -glUniformMatrix4fv(uniformMatrixLoc, 1, GL_FALSE, glm::value_ptr(someMatrix)); - \endcode - - You must include the file <glm/gtc/type_ptr.hpp> to get this functionality. -**/ - From 2c44805686602cb7ef5085b6bc143e6adcee8324 Mon Sep 17 00:00:00 2001 From: Christophe Riccio <g.truc.creation@gmail.com> Date: Tue, 8 Feb 2011 22:28:01 +0000 Subject: [PATCH 11/22] Added doxygen theme --- doc/theme/doxygen.css | 822 ++++++++++++++++++++++++++++++++++++++++++ doc/theme/tabs.css | 62 ++++ 2 files changed, 884 insertions(+) create mode 100644 doc/theme/doxygen.css create mode 100644 doc/theme/tabs.css diff --git a/doc/theme/doxygen.css b/doc/theme/doxygen.css new file mode 100644 index 00000000..9f21e2d0 --- /dev/null +++ b/doc/theme/doxygen.css @@ -0,0 +1,822 @@ +/* The standard CSS for doxygen */ + +body, table, div, p, dl +{ + font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; + font-size: 12px; +} + +body +{ + background-color: #FFC080; + /*width:1024px;*/ + margin-left:auto; + margin-right:auto; +} + +/* @group Heading Levels */ + +h1 +{ + color:#FF8000; + font-size: 150%; +} + +h2 +{ + color:#FF8000; + font-size: 120%; +} + +h3 { + font-size: 100%; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd, p.starttd { + margin-top: 2px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #FFF8F0; + border: 0px solid #FF8000; + text-align: center; + margin: 2px; + padding: 2px; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #000000; + font-weight: normal; + /*text-decoration: none;*/ +} + +.contents a:visited { + color: #606060; +} +/* +.contents{ + background-color: #FFF8F0; +} +*/ +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code { + color: #4665A2; +} + +a.codeRef { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +.fragment { + font-family: monospace, fixed; + font-size: 105%; +} + +pre.fragment { + border: 0px solid #FF8000; + background-color: #FFF8F0; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background: white; + color: black; + margin: 0; +} + +div.contents +{ + background-color:#FFF8F0; + padding-top: 10px; + padding-left: 10px; + padding-right: 10px; +} + +td.indexkey { + font-weight: bold; + border: 0px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 4px 10px; +} + +td.indexvalue { + border: 0px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #FFF8F0; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 0px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 0px solid #FF8000; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #FFFCF8; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #000000; +} + +.memItemLeft, .memItemRight, .memTemplParams { + border-top: 4px solid #FFFFFF; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memTemplParams { + color: #404040; + white-space: nowrap; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.memitem { + padding: 0; + margin-bottom: 10px; +} + +.memname { + white-space: nowrap; + font-weight: bold; + margin-left: 6px; +} + +.memproto { + border-top: 1px solid #FF8000; + border-left: 1px solid #FF8000; + border-right: 1px solid #FF8000; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 8px; + border-top-left-radius: 8px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 8px; + -moz-border-radius-topleft: 8px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 8px; + -webkit-border-top-left-radius: 8px; + /*background-image:url('nav_f.png');*/ + background-repeat:repeat-x; + background-color: #FFF8F0; + +} + +.memdoc { + border-bottom: 1px solid #FF8000; + border-left: 1px solid #FF8000; + border-right: 1px solid #FF8000; + padding: 2px 5px; + background-color: #FFFFFF; + border-top-width: 0; + /* opera specific markup */ + border-bottom-left-radius: 8px; + border-bottom-right-radius: 8px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #FFF0E0 95%, #FFF8F0); + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#FFF0E0), to(#FFF8F0)); +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} + +.params, .retval, .exception, .tparams { + border-spacing: 6px 2px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + + + + +/* @end */ + +/* @group Directory (tree) */ + +/* for the tree view */ + +.ftvtree { + font-family: sans-serif; + margin: 0px; +} + +/* these are for tree view when used as main index */ + +.directory { + font-size: 9pt; + font-weight: bold; + margin: 5px; +} + +.directory h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +/* +The following two styles can be used to replace the root node title +with an image of your choice. Simply uncomment the next two styles, +specify the name of your image and be sure to set 'height' to the +proper pixel height of your image. +*/ + +/* +.directory h3.swap { + height: 61px; + background-repeat: no-repeat; + background-image: url("yourimage.gif"); +} +.directory h3.swap span { + display: none; +} +*/ + +.directory > h3 { + margin-top: 0; +} + +.directory p { + margin: 0px; + white-space: nowrap; +} + +.directory div { + display: none; + margin: 0px; +} + +.directory img { + vertical-align: -30%; +} + +/* these are for tree view when not used as main index */ + +.directory-alt { + font-size: 100%; + font-weight: bold; +} + +.directory-alt h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +.directory-alt > h3 { + margin-top: 0; +} + +.directory-alt p { + margin: 0px; + white-space: nowrap; +} + +.directory-alt div { + display: none; + margin: 0px; +} + +.directory-alt img { + vertical-align: -30%; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; +} + +address { + font-style: normal; + color: #804000; +} + +table.doxtable { + border-collapse:collapse; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; +} + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; +} + +.navpath li.navelem a:hover +{ + color:#FF8000; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + font-size: 8pt; + padding-left: 5px; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + /*background-image:url('nav_h.png');*/ + background-repeat:repeat-x; + background-color: #FFF8F0; + margin: 0px; + border-bottom: 0px solid #FFC080; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug +{ + border-color: #FF8000; + border-left:4px solid; + padding: 0 0 0 6px; +} + +dl.note +{ + border-color: #D0D000; +} + +dl.warning, dl.attention +{ + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + border-color: #00D000; +} + +dl.deprecated +{ + border-color: #505050; +} + +dl.todo +{ + border-color: #00C0E0; +} + +dl.test +{ + border-color: #3030E0; +} + +dl.bug +{ + border-color: #C08050; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectbrief +{ + font: 120% arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 0px solid #FF8000; +} + +#top +{ + /*background-color:#000000;*/ +} diff --git a/doc/theme/tabs.css b/doc/theme/tabs.css new file mode 100644 index 00000000..d315e35b --- /dev/null +++ b/doc/theme/tabs.css @@ -0,0 +1,62 @@ +.tabs, .tabs2, .tabs3 { + /*background-image: url('tab_b.png');*/ + background-color:#FFF8F0; + width: 100%; + z-index: 101; + font-size: 13px; +} + +.tabs2 { + font-size: 10px; +} +.tabs3 { + font-size: 9px; +} + +.tablist { + margin: 0; + padding: 0; + display: table; +} + +.tablist li { + float: left; + display: table-cell; + /*background-image: url('tab_b.png');*/ + line-height: 36px; + list-style: none; +} + +.tablist a { + display: block; + padding: 0 20px; + font-weight: bold; + /*background-image:url('tab_s.png');*/ + background-repeat:no-repeat; + background-position:right; + color: #FF8000; + /*text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);*/ + text-decoration: none; + outline: none; +} + +.tabs3 .tablist a { + padding: 0 10px; +} + +.tablist a:hover { + /*background-image: url('tab_h.png');*/ + background-color:#FFFEFD; + background-repeat:repeat-x; + color: #FF8000; + /*text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);*/ + text-decoration:underline; +} + +.tablist li.current a { + /*background-image: url('tab_a.png');*/ + background-color:#FFFEFD; + background-repeat:repeat-x; + color: #FF8000; + /*text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);*/ +} From 06949deeb3356f03fe683f80fc1914960f73fb37 Mon Sep 17 00:00:00 2001 From: Christophe Riccio <g.truc.creation@gmail.com> Date: Wed, 9 Feb 2011 13:51:54 +0000 Subject: [PATCH 12/22] Updated doxugen files, mainly extensions description. --- doc/coreModules.doxy | 11 +- doc/gtcModules.doxy | 58 +++++----- doc/gtxModules.doxy | 242 ++++++++++++++++++++-------------------- doc/pages.doxy | 14 ++- doc/virtrevModules.doxy | 2 +- 5 files changed, 161 insertions(+), 166 deletions(-) diff --git a/doc/coreModules.doxy b/doc/coreModules.doxy index c67a45ab..1b90e3df 100644 --- a/doc/coreModules.doxy +++ b/doc/coreModules.doxy @@ -16,7 +16,7 @@ /*! - \defgroup core_types Core Types + \defgroup core_types Types \brief The standard types defined by the specification. @@ -27,7 +27,7 @@ **/ /*! - \defgroup core_precision Core Precision Types + \defgroup core_precision Precision Types \brief Non-GLSL types that are used to define precision-based types. @@ -44,17 +44,18 @@ **/ /*! - \defgroup core_template Core Template Types + \defgroup core_template Template Types - \brief The generic template types used as the basis for the core types. + \brief The generic template types used as the basis for the core types. These types are all templates used to define the actual \ref core_types. + These templetes are implementation details of GLM types and should not be used explicitly. \ingroup core **/ /*! - \defgroup core_funcs Core Functions + \defgroup core_funcs Functions \brief The functions defined by the specification. diff --git a/doc/gtcModules.doxy b/doc/gtcModules.doxy index 2c1e4fc9..3c4e49d2 100644 --- a/doc/gtcModules.doxy +++ b/doc/gtcModules.doxy @@ -1,55 +1,48 @@ /*! \defgroup gtc GTC Extensions (Stable) - \brief Functions and types that GLSL does not provide, but are useful to have. + \brief Functions and types that the GLSL specification doesn't define, but useful to have for a C++ program. - Core extensions differ from \ref gtx "experimental extensions" in that core extensions - are fairly stable. The API for experimental extensions is expected to change - significantly between versions. + GTC extensions aim to be stable. - Even if it's highly unrecommended, you can bring all of the extensions, by - including <glm/ext.hpp>. Otherwise, you will have to include each extension - by including a specific file. + Even if it's highly unrecommended, it's possible to include all the extensions at once by + including <glm/ext.hpp>. Otherwise, each extension needs to be included a specific file. **/ /*! - \defgroup gtc_half_float Half Float Core Extension + \defgroup gtc_half_float GLM_GTC_half_float: Half-precision floating-point based types and functions. \ingroup gtc - \brief Defines the half-float type, along with various typedefs for vectors and matrices. - - You must include <glm/gtc/half_float.hpp> to get this functionality. + Defines the half-precision floating-point type, along with various typedefs for vectors and matrices. + <glm/gtc/half_float.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtc_matrix_access Matrix Access Core Extension + \defgroup gtc_matrix_access GLM_GTC_matrix_access: Access matrix rows and columns. \ingroup gtc - \brief Defines functions that allow you to access rows or columns of a matrix easily. - - You must include <glm/gtc/matrix_access.hpp> to get this functionality. + Defines functions to access rows or columns of a matrix easily. + <glm/gtc/matrix_access.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtc_matrix_integer Integer Matrix Core Extension + \defgroup gtc_matrix_integer GLM_GTC_matrix_integer: Integer matrix types. \ingroup gtc - \brief Defines a number of matrices with integer types. - - You must include <glm/gtc/matrix_integer.hpp> to get this functionality. + Defines a number of matrices with integer types. + <glm/gtc/matrix_integer.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtc_matrix_inverse Matrix Inverse Core Extension + \defgroup gtc_matrix_inverse GLM_GTC_matrix_inverse: Additional matrix inverse function \ingroup gtc - \brief Defines additional matrix inverting functions. - - You must include <glm/gtc/matrix_inverse.hpp> to get this functionality. + Defines additional matrix inverting functions. + <glm/gtc/matrix_inverse.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtc_matrix_transform Matrix Transform Core Extension + \defgroup gtc_matrix_transform GLM_GTC_matrix_transform: Matrix transform functions. \ingroup gtc \brief Defines functions that generate common transformation matrices. @@ -60,20 +53,20 @@ perspective, ortho, etc) are designed to expect. The OpenGL compatibility specifications defines the particular layout of this eye space. - You must include <glm/gtc/matrix_transform.hpp> to get this functionality. + <glm/gtc/matrix_transform.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtc_quaternion Quaternion Core Extension + \defgroup gtc_quaternion GLM_GTC_quaternion: Quaternion types and functions \ingroup gtc \brief Defines a templated quaternion type and several quaternion operations. - You must include <glm/gtc/quaternion.hpp> to get this functionality. + <glm/gtc/quaternion.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtc_type_precision Type Precision Core Extension + \defgroup gtc_type_precision GLM_GTC_type_precision: Vector and matrix types with defined precisions. \ingroup gtc \brief Defines specific C++-based precision types. @@ -81,11 +74,11 @@ \ref core_precision defines types based on GLSL's precision qualifiers. This extension defines types based on explicitly-sized C++ data types. - You must include the file <glm/gtc/type_precision.hpp> to get this functionality. + <glm/gtc/type_precision.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtc_type_ptr Pointer Access Core Extension + \defgroup gtc_type_ptr GLM_GTC_type_ptr: Memory layout access. \ingroup gtc \brief Used to get a pointer to the memory layout of a basic type. @@ -93,7 +86,7 @@ This extension defines an overloaded function, glm::value_ptr, which takes any of the \ref core_template "core template types". It returns a pointer to the memory layout of the object. Matrix types store their values - in row-major order. + in column-major order. This is useful for uploading data to matrices or copying data to buffer objects. @@ -102,6 +95,7 @@ \code #include <glm/glm.hpp> #include <glm/gtc/type_ptr.hpp> + glm::vec3 aVector(3); glm::mat4 someMatrix(1.0); @@ -109,6 +103,6 @@ glUniform3fv(uniformLoc, 1, glm::value_ptr(aVector)); glUniformMatrix4fv(uniformMatrixLoc, 1, GL_FALSE, glm::value_ptr(someMatrix)); \endcode - You must include the file <glm/gtc/type_ptr.hpp> to get this functionality. + <glm/gtc/type_ptr.hpp> need to be included to use these functionalities. **/ diff --git a/doc/gtxModules.doxy b/doc/gtxModules.doxy index f16a2849..8df24c9c 100644 --- a/doc/gtxModules.doxy +++ b/doc/gtxModules.doxy @@ -1,500 +1,498 @@ /*! \defgroup gtx GTX Extensions (Experimental) - \brief Functions and types that GLSL does not provide, but are useful to have. + \brief Functions and types that the GLSL specification doesn't define, but useful to have for a C++ program. Experimental extensions are useful functions and types, but the development of their API and functionality is not necessarily stable. They can change substantially between versions. Backwards compatibility is not much of an issue for them. - Even if it's highly unrecommended, you can bring all of the extensions, by - including <glm/ext.hpp>. Otherwise, you will have to include each extension - by including a specific file. + Even if it's highly unrecommended, it's possible to include all the extensions at once by + including <glm/ext.hpp>. Otherwise, each extension needs to be included a specific file. **/ /*! - \defgroup gtx_associated_min_max Associated Min/Max Experimental Extension + \defgroup gtx_associated_min_max GLM_GTX_associated_min_max: Associated Min/Max \ingroup gtx \brief Min and max functions that return associated values not the compared onces. - - You must include the file <glm/glx/associated_min_max.hpp> to get this functionality. + <glm/gtx/associated_min_max.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_bit Bitwise Operations Experimental Extension + \defgroup gtx_bit GLM_GTX_bit: Extended bitwise operations \ingroup gtx \brief Allow to perform bit operations on integer values - You must include the file <glm/glx/bit.hpp> to get this functionality. + <glm/gtx/bit.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_closest_point Find Closest Point Experimental Extension + \defgroup gtx_closest_point GLM_GTX_closest_point: Find closest point \ingroup gtx \brief Find the point on a straight line which is the closet of a point. - You must include the file <glm/glx/closest_point.hpp> to get this functionality. + <glm/gtx/closest_point.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_color_cast Color Conversion Experimental Extension + \defgroup gtx_color_cast GLM_GTX_color_cast: Color conversion \ingroup gtx \brief Conversion between two color types. - You must include the file <glm/glx/color_cast.hpp> to get this functionality. + <glm/gtx/color_cast.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_color_space RGB to HSV Conversion Experimental Extension + \defgroup gtx_color_space GLM_GTX_color_space: RGB to HSV conversion \ingroup gtx \brief Related to RGB to HSV conversions and operations. - You must include the file <glm/glx/color_space.hpp> to get this functionality. + <glm/gtx/color_space.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_color_space_YCoCg RGB to YCoCg Conversion Experimental Extension + \defgroup gtx_color_space_YCoCg GLM_GTX_color_space_YCoCg: RGB to YCoCg conversion \ingroup gtx \brief RGB to YCoCg conversions and operations - You must include the file <glm/glx/color_space_YCoCg.hpp> to get this functionality. + <glm/gtx/color_space_YCoCg.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_compatibility Cg and HLSL Compatibility Experimental Extension + \defgroup gtx_compatibility GLM_GTX_compatibility: Cg and HLSL compatibility \ingroup gtx \brief Provide functions to increase the compatibility with Cg and HLSL languages - You must include the file <glm/glx/compatibility.hpp> to get this functionality. + <glm/gtx/compatibility.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_component_wise Component Wise Experimental Extension + \defgroup gtx_component_wise GLM_GTX_component_wise: Component wise \ingroup gtx \brief Operations between components of a type - You must include the file <glm/glx/component_wise.hpp> to get this functionality. + <glm/gtx/component_wise.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_epsilon Epsilon Comparison Experimental Extension + \defgroup gtx_epsilon GLM_GTX_epsilon: Epsilon comparison \ingroup gtx \brief Comparison functions for a user defined epsilon values. - You must include the file <glm/glx/epsilon.hpp> to get this functionality. + <glm/gtx/epsilon.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_euler_angles Matrix From Euler Angles Experimental Extension + \defgroup gtx_euler_angles GLM_GTX_euler_angles: Matrix from euler angles \ingroup gtx \brief Build matrices from Euler angles. - You must include the file <glm/glx/euler_angles.hpp> to get this functionality. + <glm/gtx/euler_angles.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_extend Position Extending Experimental Extension + \defgroup gtx_extend GLM_GTX_extend: Position extending \ingroup gtx \brief Extend a position from a source to a position at a defined length. - You must include the file <glm/glx/extend.hpp> to get this functionality. + <glm/gtx/extend.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_extented_min_max Extended Min Max Experimental Extension + \defgroup gtx_extented_min_max GLM_GTX_extented_min_max: Extended min max \ingroup gtx \brief Min and max functions for 3 to 4 parameters. - You must include the file <glm/glx/extented_min_max.hpp> to get this functionality. + <glm/gtx/extented_min_max.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_fast_exponential Fast Exponentiation Experimental Extension + \defgroup gtx_fast_exponential GLM_GTX_fast_exponential: Fast exponentiation functions \ingroup gtx \brief Fast but less accurate implementations of exponential based functions. - You must include the file <glm/glx/fast_exponential.hpp> to get this functionality. + <glm/gtx/fast_exponential.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_fast_square_root Fast Square Root Experimental Extension + \defgroup gtx_fast_square_root GLM_GTX_fast_square_root: Fast square root functions \ingroup gtx \brief Fast but less accurate implementations of square root based functions. - You must include the file <glm/glx/fast_square_root.hpp> to get this functionality. + <glm/gtx/fast_square_root.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_fast_trigonometry Fast Trig Experimental Extension + \defgroup gtx_fast_trigonometry GLM_GTX_fast_trigonometry: Fast trigonometric functions \ingroup gtx \brief Fast but less accurate implementations of trigonometric functions. - You must include the file <glm/glx/fast_trigonometry.hpp> to get this functionality. + <glm/gtx/fast_trigonometry.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_handed_coordinate_space Space Handedness Experimental Extension + \defgroup gtx_handed_coordinate_space GLM_GTX_handed_coordinate_space: Space Handedness \ingroup gtx \brief To know if a set of three basis vectors defines a right or left-handed coordinate system. - You must include the file <glm/glx/handed_coordinate_system.hpp> to get this functionality. + <glm/gtx/handed_coordinate_system.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_inertia Intertial Matrix Experimental Extension + \defgroup gtx_inertia GLM_GTX_inertia: Intertial matrix \ingroup gtx \brief Create inertia matrices - You must include the file <glm/glx/inertia.hpp> to get this functionality. + <glm/gtx/inertia.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_int_10_10_10_2 Packed Integer Experimental Extension + \defgroup gtx_int_10_10_10_2 GLM_GTX_int_10_10_10_2: Packed integer + \ingroup gtx + + \brief Pack vector to 1010102 integers. Storage only. + + <glm/gtx/int_10_10_10_2.hpp> need to be included to use these functionalities. +**/ + +/*! + \defgroup gtx_integer GLM_GTX_integer: Extended integer functions \ingroup gtx \brief Add support for integer for core functions - You must include the file <glm/glx/int_10_10_10_2.hpp> to get this functionality. + <glm/gtx/integer.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_integer Integer Function Experimental Extension - \ingroup gtx - - \brief Add support for integer for core functions - - You must include the file <glm/glx/integer.hpp> to get this functionality. -**/ - -/*! - \defgroup gtx_intersect Intersection Test Experimental Extension + \defgroup gtx_intersect GLM_GTX_intersect: Intersection tests \ingroup gtx \brief Add intersection functions - You must include the file <glm/glx/intersect.hpp> to get this functionality. + <glm/gtx/intersect.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_log_base Log With Base Experimental Extension + \defgroup gtx_log_base GLM_GTX_log_base: Log with base \ingroup gtx \brief Logarithm for any base. base can be a vector or a scalar. - You must include the file <glm/glx/log_base.hpp> to get this functionality. + <glm/gtx/log_base.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_matrix_cross_product Cross Product Matrices Experimental Extension + \defgroup gtx_matrix_cross_product GLM_GTX_matrix_cross_product: Cross product matrix form \ingroup gtx \brief Build cross product matrices - You must include the file <glm/glx/matrix_cross_product.hpp> to get this functionality. + <glm/gtx/matrix_cross_product.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_matrix_major_storage Build Matrix Experimental Extension + \defgroup gtx_matrix_major_storage GLM_GTX_matrix_major_storage: Build matrix \ingroup gtx \brief Build matrices with specific matrix order, row or column - You must include the file <glm/glx/matrix_major_storage.hpp> to get this functionality. + <glm/gtx/matrix_major_storage.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_matrix_operation Diagonal Matrix Experimental Extension + \defgroup gtx_matrix_operation GLM_GTX_matrix_operation: Extended matrix operations \ingroup gtx \brief Build diagonal matrices from vectors. - You must include the file <glm/glx/matrix_operation.hpp> to get this functionality. + <glm/gtx/matrix_operation.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_matrix_query Query Matrix Properties Experimental Extension + \defgroup gtx_matrix_query GLM_GTX_matrix_query: Query matrix properties \ingroup gtx \brief Query to evaluate matrix properties - You must include the file <glm/glx/matrix_query.hpp> to get this functionality. + <glm/gtx/matrix_query.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_mixed_product Mixed Product Experimental Extension + \defgroup gtx_mixed_product GLM_GTX_mixed_producte: Mixed product \ingroup gtx \brief Mixed product of 3 vectors. - You must include the file <glm/glx/mixed_product.hpp> to get this functionality. + <glm/gtx/mixed_product.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_multiple Multiples Experimental Extension + \defgroup gtx_multiple GLM_GTX_multiple: Multiples \ingroup gtx \brief Find the closest number of a number multiple of other number. - You must include the file <glm/glx/multiple.hpp> to get this functionality. + <glm/gtx/multiple.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_norm Vector Norm Experimental Extension + \defgroup gtx_norm GLM_GTX_norm: Vector norm calculations \ingroup gtx \brief Various way to compute vector norms. - You must include the file <glm/glx/norm.hpp> to get this functionality. + <glm/gtx/norm.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_normal Compute Normal Experimental Extension + \defgroup gtx_normal GLM_GTX_normal: Compute normals \ingroup gtx \brief Compute the normal of a triangle. - You must include the file <glm/glx/normal.hpp> to get this functionality. + <glm/gtx/normal.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_normalize_dot Normalize Dot Product Experimental Extension + \defgroup gtx_normalize_dot GLM_GTX_normalize_dot: Normalize dot product \ingroup gtx \brief Dot product of vectors that need to be normalize with a single square root. - You must include the file <glm/glx/normalized_dot.hpp> to get this functionality. + <glm/gtx/normalized_dot.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_number_precision Number Precision Experimental Extension + \defgroup gtx_number_precision GLM_GTX_number_precision: Number precision \ingroup gtx \brief Defined size types. - You must include the file <glm/glx/number_precision.hpp> to get this functionality. + <glm/gtx/number_precision.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_ocl_type OpenCL Types Experimental Extension + \defgroup gtx_ocl_type GLM_GTX_ocl_type: OpenCL types \ingroup gtx \brief OpenCL types. - You must include the file <glm/glx/ocl_type.hpp> to get this functionality. + <glm/gtx/ocl_type.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_optimum_pow Optimum Pow Experimental Extension + \defgroup gtx_optimum_pow GLM_GTX_optimum_pow: Optimum pow \ingroup gtx \brief Integer exponentiation of power functions. - You must include the file <glm/glx/optimum_pow.hpp> to get this functionality. + <glm/gtx/optimum_pow.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_orthonormalize Orthonormalize Experimental Extension + \defgroup gtx_orthonormalize GLM_GTX_orthonormalize: Orthonormalize \ingroup gtx \brief Orthonormalize matrices. - You must include the file <glm/glx/orthonormalize.hpp> to get this functionality. + <glm/gtx/orthonormalize.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_perpendicular Perpendicular Experimental Extension + \defgroup gtx_perpendicular GLM_GTX_perpendicular: Perpendicular \ingroup gtx \brief Perpendicular of a vector from other one - You must include the file <glm/glx/perpendicular.hpp> to get this functionality. + <glm/gtx/perpendicular.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_polar_coordinates Polar Coordinates Experimental Extension + \defgroup gtx_polar_coordinates GLM_GTX_polar_coordinates: Polar coordinates \ingroup gtx \brief Conversion from Euclidean space to polar space and revert. - You must include the file <glm/glx/polar_coordinates.hpp> to get this functionality. + <glm/gtx/polar_coordinates.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_projection Projection Experimental Extension + \defgroup gtx_projection GLM_GTX_projection: Projection \ingroup gtx \brief Projection of a vector to other one - You must include the file <glm/glx/projection.hpp> to get this functionality. + <glm/gtx/projection.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_quaternion Quaternion Experimental Extension + \defgroup gtx_quaternion GLM_GTX_quaternion: Extented quaternion types and functions \ingroup gtx - \brief Quaternion types and functions + \brief Extented quaternion types and functions - You must include the file <glm/glx/quaternion.hpp> to get this functionality. + <glm/gtx/quaternion.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_random Random Experimental Extension + \defgroup gtx_random GLM_GTX_random: Random \ingroup gtx \brief Generate random number from various distribution methods - You must include the file <glm/glx/random.hpp> to get this functionality. + <glm/gtx/random.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_raw_data Raw Data Experimental Extension + \defgroup gtx_raw_data GLM_GTX_raw_data: Raw data \ingroup gtx \brief Projection of a vector to other one - You must include the file <glm/glx/raw_data.hpp> to get this functionality. + <glm/gtx/raw_data.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_reciprocal Reciprocal Experimental Extension + \defgroup gtx_reciprocal GLM_GTX_reciprocal: Reciprocal \ingroup gtx \brief Define secant, cosecant and cotangent functions. - You must include the file <glm/glx/reciprocal.hpp> to get this functionality. + <glm/gtx/reciprocal.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_rotate_vector Rotate Vector Experimental Extension + \defgroup gtx_rotate_vector GLM_GTX_rotate_vector: Rotate vector \ingroup gtx \brief Function to directly rotate a vector - You must include the file <glm/glx/rotate_vector.hpp> to get this functionality. + <glm/gtx/rotate_vector.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_simd_mat4 SIMD Mat4 Experimental Extension + \defgroup gtx_simd_mat4 GLM_GTX_simd_mat4: SIMD mat4 type and functions \ingroup gtx \brief SIMD implementation of mat4 type. - You must include the file <glm/glx/simd_mat4.hpp> to get this functionality. + <glm/gtx/simd_mat4.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_simd_vec4 SIMD Vec4 Experimental Extension + \defgroup gtx_simd_vec4 GLM_GTX_simd_vec4: SIMD vec4 type and functions \ingroup gtx \brief SIMD implementation of vec4 type. - You must include the file <glm/glx/simd_vec4.hpp> to get this functionality. + <glm/gtx/simd_vec4.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_spline Spline Experimental Extension + \defgroup gtx_spline GLM_GTX_spline: Spline \ingroup gtx \brief Spline functions - You must include the file <glm/glx/spline.hpp> to get this functionality. + <glm/gtx/spline.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_string_cast String Cast Experimental Extension + \defgroup gtx_string_cast GLM_GTX_string_cast: String cast \ingroup gtx \brief Setup strings for GLM type values - You must include the file <glm/glx/transform.hpp> to get this functionality. + <glm/gtx/string_cast.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_transform Transformation Matrices Experimental Extension + \defgroup gtx_transform GLM_GTX_transform: Extented transformation matrices \ingroup gtx \brief Add transformation matrices - You must include the file <glm/glx/transform2.hpp> to get this functionality. + <glm/gtx/transform.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_transform2 Extra Transform Matrices Experimental Extension + \defgroup gtx_transform2 GLM_GTX_transform2: Extra transformation matrices \ingroup gtx \brief Add extra transformation matrices - You must include the file <glm/glx/unsigned_int.hpp> to get this functionality. + <glm/gtx/transform2.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_unsigned_int Unsigned Int Experimental Extension + \defgroup gtx_unsigned_int GLM_GTX_unsigned_int: Unsigned int \ingroup gtx \brief Add support for unsigned integer for core functions - You must include the file <glm/glx/unsigned_int.hpp> to get this functionality. + <glm/gtx/unsigned_int.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_vector_access Vector Access Experimental Extension + \defgroup gtx_vector_access GLM_GTX_vector_angle: Vector access \ingroup gtx \brief Function to set values to vectors - You must include the file <glm/glx/vector_access.hpp> to get this functionality. + <glm/gtx/vector_access.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_vector_angle Vector Angle Experimental Extension + \defgroup gtx_vector_angle GLM_GTX_vector_angle: Vector angle \ingroup gtx \brief Compute angle between vectors - You must include the file <glm/glx/vector_angle.hpp> to get this functionality. + <glm/gtx/vector_angle.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_vector_query Vector Query Experimental Extension + \defgroup gtx_vector_query GLM_GTX_vector_query: Vector query \ingroup gtx \brief Query informations of vector types - You must include the file <glm/glx/vector_query.hpp> to get this functionality. + <glm/gtx/vector_query.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_verbose_operator Verbose Operator Experimental Extension + \defgroup gtx_verbose_operator GLM_GTX_verbose_operator: Verbose operator \ingroup gtx \brief Use words to replace operators - You must include the file <glm/glx/verbose_operator.hpp> to get this functionality. + <glm/gtx/verbose_operator.hpp> need to be included to use these functionalities. **/ /*! - \defgroup gtx_wrap Wrap Experimental Extension + \defgroup gtx_wrap GLM_GTX_wrap: Texture coordinate wrap modes \ingroup gtx - \brief Wrapping mode using my texture samping. + \brief Wrapping mode of texture coordinates. - You must include the file <glm/glx/wrap.hpp> to get this functionality. + <glm/gtx/wrap.hpp> need to be included to use these functionalities. **/ diff --git a/doc/pages.doxy b/doc/pages.doxy index 58c91d79..6852e179 100644 --- a/doc/pages.doxy +++ b/doc/pages.doxy @@ -21,7 +21,8 @@ The source code is licenced under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT licence</a>. - Thanks for contributing to the project by <a href="https://sourceforge.net/apps/trac/ogl-math/newticket">submitting tickets for bug reports and feature requests</a>. (SF.net account required). Any feedback is welcome at glm@g-truc.net. + Thanks for contributing to the project by <a href="https://sourceforge.net/apps/trac/ogl-math/newticket">submitting tickets for bug reports and feature requests</a>. + (SF.net account required). Any feedback is welcome at glm@g-truc.net. \li \subpage pg_started \li \subpage pg_advanced @@ -44,7 +45,7 @@ GLM makes heavy usages of C++ templates. This design may significantly increase the compile time for files that use GLM. Precompiled headers are recommended to avoid this issue. - \section started_sample Use Sample of GLM Core + \section started_sample Use Sample of GLM \code #include <glm/glm.hpp> @@ -60,10 +61,11 @@ int foo() \section started_structure Library Structure - GLM is arranged in 3 distinct segments. These are the GLM core, - core extensions, and experimental extensions. + GLM is arranged in 2 distinct segments. These are the GLM features based on the GLSL specification and a set of extensions. + Some extensions are stable and backward compatible (\ref gtc GTC \ref virtrev VIRTREV) but some are experimental (\ref gtx GTX) + which means that they are not guarantee to be backward compatible from version to version. - The \ref core "GLM core" represents only what GLSL's core provides in terms of types and functions + The \ref core "GLM" represents only what GLSL's core provides in terms of types and functions (to the best of GLM's ability to replicate them). All that is needed to use the core is to <tt>#include <glm/glm.hpp></tt>. @@ -157,7 +159,7 @@ void BindUniforms(GLuint uniVec, GLuint uniMat) **/ /*! - \page pg_advanced Advaned Usage + \page pg_advanced Advanced Usage \section advanced_swizzle Swizzle Operators diff --git a/doc/virtrevModules.doxy b/doc/virtrevModules.doxy index 8eb4e74e..1f0b8aed 100644 --- a/doc/virtrevModules.doxy +++ b/doc/virtrevModules.doxy @@ -5,7 +5,7 @@ **/ /*! - \defgroup virtrev_xstream xml like output + \defgroup virtrev_xstream GLM_VIRTREV_xstream: xml like output \ingroup virtrev \brief Streaming vector and matrix in a xml way. From 0ecbec4f7462d874c17906e8d85473230f262133 Mon Sep 17 00:00:00 2001 From: Christophe Riccio <g.truc.creation@gmail.com> Date: Wed, 9 Feb 2011 13:53:33 +0000 Subject: [PATCH 13/22] removed IMG namespace --- glm/glm.hpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/glm/glm.hpp b/glm/glm.hpp index cc448ec5..37bd2250 100644 --- a/glm/glm.hpp +++ b/glm/glm.hpp @@ -67,9 +67,6 @@ namespace glm //! The interface could change between releases. namespace gtx{} - //! IMG extensions. - namespace img{} - //! VIRTREV extensions. namespace img{} From 7cf85dddb02704f7430cf115b28a1a17dbf4cdbf Mon Sep 17 00:00:00 2001 From: Christophe Riccio <g.truc.creation@gmail.com> Date: Wed, 9 Feb 2011 13:55:55 +0000 Subject: [PATCH 14/22] Fixed typo --- copying.txt | 2 +- doc/coreModules.doxy | 4 ++-- glm/glm.hpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/copying.txt b/copying.txt index 9c8fbf98..058348f1 100644 --- a/copying.txt +++ b/copying.txt @@ -1,6 +1,6 @@ The MIT License -Copyright (c) 2005 - 2010 G-Truc Creation +Copyright (c) 2005 - 2011 G-Truc Creation Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/doc/coreModules.doxy b/doc/coreModules.doxy index 1b90e3df..1961ff71 100644 --- a/doc/coreModules.doxy +++ b/doc/coreModules.doxy @@ -27,7 +27,7 @@ **/ /*! - \defgroup core_precision Precision Types + \defgroup core_precision Precision types \brief Non-GLSL types that are used to define precision-based types. @@ -44,7 +44,7 @@ **/ /*! - \defgroup core_template Template Types + \defgroup core_template Template types \brief The generic template types used as the basis for the core types. diff --git a/glm/glm.hpp b/glm/glm.hpp index 37bd2250..a587e78c 100644 --- a/glm/glm.hpp +++ b/glm/glm.hpp @@ -45,7 +45,7 @@ namespace glm bool main_core(); }//namespace test - //! GLM core. Namespace that includes all the feature define by GLSL 1.30.8 specification. This namespace is included in glm namespace. + //! GLM core. Namespace that includes all the feature define by GLSL 4.10.6 specification. This namespace is included in glm namespace. namespace core { //! Scalar, vectors and matrices From 081281cb2d211002b635288668a655fca0813be3 Mon Sep 17 00:00:00 2001 From: Christophe Riccio <g.truc.creation@gmail.com> Date: Wed, 9 Feb 2011 13:58:04 +0000 Subject: [PATCH 15/22] Fixed typo --- doc/virtrevModules.doxy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/virtrevModules.doxy b/doc/virtrevModules.doxy index 1f0b8aed..b617cb90 100644 --- a/doc/virtrevModules.doxy +++ b/doc/virtrevModules.doxy @@ -1,5 +1,5 @@ /*! - \defgroup virtrev VIRTREV Extensions (Stable) + \defgroup virtrev VIRTREV Extensions \brief Extensions develop and maintain by Mathieu [matrem] Roumillac (http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showprofile&User=22660). **/ From bf363433d8e06e16fbe1ec4ae367e897875205e1 Mon Sep 17 00:00:00 2001 From: Christophe Riccio <g.truc.creation@gmail.com> Date: Wed, 9 Feb 2011 18:05:36 +0000 Subject: [PATCH 16/22] Updated doc --- doc/pages.doxy | 78 +++++++++++++++++++++++++++++++------------------- 1 file changed, 49 insertions(+), 29 deletions(-) diff --git a/doc/pages.doxy b/doc/pages.doxy index 6852e179..0e5a9f9f 100644 --- a/doc/pages.doxy +++ b/doc/pages.doxy @@ -69,24 +69,23 @@ int foo() (to the best of GLM's ability to replicate them). All that is needed to use the core is to <tt>#include <glm/glm.hpp></tt>. - \ref gtc "Core extensions" are sets of functions and types that add onto the core. + \ref gtc "GTC extensions" are functions and types that add onto the core. These are considered reasonably stable, with their APIs not changing much between versions. Each core extension is included with a separated header file include. All of the core extensions are in the "glm/gtc" directory. - \ref gtx "Experimental extensions" are sets of functions and types that add onto the - core. Unlike core extensions, their APIs are not considered particularly stable, which - is why they are "experimental". All of the experimental extensions are in the - "glm/gtx" directory. Like core extensions, each experimental extension is included + \ref gtx "GTX extensions" are functions and types that add onto the + core. Unlike GTC extensions, their APIs are not considered particularly stable, which + is why they are marked "experimental". Like GTC extensions, each experimental extension is included with a separate header file. - If you want to use all extensions by default, you may <tt>#include <glm/ext.hpp></tt>. - This includes all extensions, core and experimental. + All the extensions can be included at once by default with <tt>#include <glm/ext.hpp></tt> + but this is not recommanded as it will reduce compilation speed for many unused features. - All of GLM is defined as direct children of the glm namespace, including extensions. Note that some extensions are incompatible with other extensions; this may result in C++ name collisions when used together. + All of GLM is defined as direct children of the glm namespace, including extensions. To use a particular extension, simply include the extension header file. All - extension features are added to the glm namespace. + extension features are added to the glm namespace automatically. \code #include <glm/glm.hpp> @@ -118,7 +117,7 @@ int foo() like so: <tt>glUniform3fv(loc, 1, glm::vec3(0))</tt>. However, this is not the case; the vector and matrix types are C++ classes, not arrays. - Instead, GLM provides a mechanism to get the contents of a vector or matrix as + Instead, GLM provides a mechanism to get the content of a vector or matrix as an array pointer. The \ref gtc_type_ptr extension provides this ability. \code @@ -137,7 +136,7 @@ void BindUniforms(GLuint uniVec, GLuint uniMat) Notice that all matrix types are <em>column-major</em> rather than row-major. Hence the need to pass GL_FALSE to glUniformMatrix4fv. - Alternatively, one can simply dereference the first element of the type. + Alternatively, the first element of the type can be dereferenced. \code #include <glm/glm.hpp> @@ -152,10 +151,11 @@ void BindUniforms(GLuint uniVec, GLuint uniMat) } \endcode - As you can see, this requires dereferencing the very first basic type of the object, not merely the first element. The [] operator on the matrix type returns a column vector; one must then access the first element of that column vector to get a pointer to the basic type. + This method requires dereferencing the very first basic type of the object, not merely the first element. + The [] operator on the matrix type returns a column vector; one must then access the first element of that column vector to get a pointer to the basic type. - \note This operation could have been built into the base vector and matrix types and performed with a cast operator. However, this has some downsides. Implicit casts - can cause unexpected and unwanted behavior. + \note This operation could have been built into the base vector and matrix types and performed with a cast operator. + However, this has some downsides. Implicit casts can cause unexpected and unwanted behavior. **/ /*! @@ -163,7 +163,9 @@ void BindUniforms(GLuint uniVec, GLuint uniMat) \section advanced_swizzle Swizzle Operators - A common feature of shader languages like GLSL is components swizzling. This involves being able to select which components of a vector are used and in what order. For example, "variable.x", "variable.xxy", "variable.zxyy" are examples of swizzling. + A common feature of shader languages like GLSL is components swizzling. + This involves being able to select which components of a vector are used and in what order. + For example, "variable.x", "variable.xxy", "variable.zxyy" are examples of swizzling. \code vec4 A; @@ -173,18 +175,22 @@ B.yx = A.wy; B = A.xx; \endcode - This functionally turns out to be really complicated to implement in C++ using the exact GLSL conventions. GLM provides 2 implementions this feature. + This functionally turns out to be really complicated to implement in C++ using the exact GLSL conventions. + GLM provides 2 implementions this feature. \subsection advanced_swizzle_macro Macro implementation - The first implementation follows the GLSL convensions accurately. It uses macros to achieve this, which might generates name conflicts with system headers or third party libraries. Therefore, it is disabled by default. To enable this implementation, GLM_SWIZZLE must be defined before any inclusion of <glm/glm.hpp>. + The first implementation follows the GLSL convensions accurately. + It uses macros to achieve this, which might generates name conflicts with system headers or third party libraries. + Therefore, it is disabled by default. To enable this implementation, GLM_SWIZZLE must be defined before any inclusion of <glm/glm.hpp>. \code #define GLM_SWIZZLE #include <glm/glm.hpp> \endcode - This implementation can be partially enabled by defining GLM_SWIZZLE_XYZW, GLM_SWIZZLE_RGBA or GLM_SWIZZLE_STQP. Each macro only enable a set of swizzling operators. For example we can only enable x,y,z,w and s,t,q,p operators using: + This implementation can be partially enabled by defining GLM_SWIZZLE_XYZW, GLM_SWIZZLE_RGBA or GLM_SWIZZLE_STQP. + Each macro only enable a set of swizzling operators. For example we can only enable x,y,z,w and s,t,q,p operators using: \code #define GLM_SWIZZLE_XYZW @@ -194,9 +200,15 @@ B = A.xx; \subsection advanced_swizzle_ext Extension implementation - A safer way to do swizzling is to use the <glm/gtc/swizzle.hpp> extension. This extension provides the GLSL functionality, but uses a different syntax for it. However, the swizzle extension also provides dynamic swizzling. + A safer way to do swizzling is to use the <glm/gtc/swizzle.hpp> extension. + This extension provides the GLSL functionality, but uses a different syntax for it. + Moreover, the swizzle extension also provides dynamic swizzling. - Static swizzling is resovled at compile-time. The swizzle mask ".xzyy" is as fixed as the type of a particular variable. Dynamic swizzling is resolved at runtime via function calls. Dynamic swizzling is more flexible, since one can choose the swizzle mask at runtime, but it runs slower. This performance issue is enhanced when \ref advanced_simd "SIMD instructions" are used. + Static swizzling is resovled at compile-time. + The swizzle mask ".xzyy" is as fixed as the type of a particular variable. + Dynamic swizzling is resolved at runtime via function calls. + Dynamic swizzling is more flexible, since one can choose the swizzle mask at runtime, but it runs slower. + This performance issue is enhanced when \ref advanced_simd "SIMD instructions" are used. \code #include <glm/glm.hpp> @@ -241,20 +253,26 @@ void foo() \section advanced_inline Force Inline - GLM's functions are defined in headers, so they are defined with C++'s "inline" delcaration. This does not require the compiler to inline them, however. If you want to force the compiler to inline the function, using whatever capabilities that the compiler provides to do so, you can define GLM_FORCE_INLINE before any inclusion of <glm/glm.hpp>. + GLM's functions are defined in headers, so they are defined with C++'s "inline" delcaration. + This does not require the compiler to inline them, however. + If you want to force the compiler to inline the function, using whatever capabilities that the compiler provides to do so, + you can define GLM_FORCE_INLINE before any inclusion of <glm/glm.hpp>. \code #define GLM_FORCE_INLINE #include <glm/glm.hpp> \endcode - \section advanced_simd SIMD Support + \section advanced_simd SIMD support - GLM provides some SIMD optimizations based on compiler intrinsics. These optimizations will be automatically utilized based on the build environment. These optimizations are mainly available through the extensions \ref gtx_simd_vec4 and \ref gtx_simd_mat4. + GLM provides some SIMD optimizations based on compiler intrinsics. + These optimizations will be automatically utilized based on the build environment. + These optimizations are mainly available through the extensions \ref gtx_simd_vec4 and \ref gtx_simd_mat4. A programmer can restrict or force instruction sets used for these optimizations using GLM_FORCE_SSE2 or GLM_FORCE_AVX. - A programmer can discard the use of intrinsics by defining GLM_FORCE_PURE before any inclusion of <glm/glm.hpp>. If GLM_FORCE_PURE is defined, then including a SIMD extension will generate a build error. + A programmer can discard the use of intrinsics by defining GLM_FORCE_PURE before any inclusion of <glm/glm.hpp>. + If GLM_FORCE_PURE is defined, then including a SIMD extension will generate a build error. \code #define GLM_FORCE_PURE @@ -262,7 +280,8 @@ void foo() \endcode \section advanced_compatibility Compatibility - Compilers have some language extensions that GLM will automatically take advantage of them when they are enabled. The #define GLM_FORCE_CXX98 can switch off these extensions, forcing GLM to operate on pure C++98. + Compilers have some language extensions that GLM will automatically take advantage of them when they are enabled. + The #define GLM_FORCE_CXX98 can switch off these extensions, forcing GLM to operate on pure C++98. \code #define GLM_FORCE_CXX98 @@ -271,11 +290,12 @@ void foo() **/ /*! - \page pg_deprecated Deprecated Function Replacements + \page pg_deprecated Deprecated function replacements - The OpenGL 3.0 specification deprecated some features, and most of these have been removed from the OpenGL 3.1 specfication and beyond. GLM provides some replacement functions. Many of these functions come from the \ref gtc_matrix_transform extension. + The OpenGL 3.0 specification deprecated some features, and most of these have been removed from the OpenGL 3.1 specfication and beyond. + GLM provides some replacement functions. Many of these functions come from the \ref gtc_matrix_transform extension. - \section deprecated_opengl OpenGL Function Replacements + \section deprecated_opengl OpenGL function replacements <dl> <dt>glRotate[fd]</dt> @@ -300,7 +320,7 @@ void foo() <dd>\link glm::gtc::matrix_transform::lookAt glm::lookAt \endlink</dd> </dl> - \section deprecated_glu GLU Function Replacements + \section deprecated_glu GLU function replacements <dl> <dt>gluOrtho2D</dt> From 9fefd16e4c239fa16bf379769130a29d54c383bd Mon Sep 17 00:00:00 2001 From: Christophe Riccio <g.truc.creation@gmail.com> Date: Thu, 10 Feb 2011 12:27:46 +0000 Subject: [PATCH 17/22] Updated theme --- doc/CMakeLists.txt | 2 +- doc/common/style.css | 10 +-- doc/theme/doxygen.css | 153 ++++++++++++++++++++++++++---------------- doc/theme/tabs.css | 17 +++++ 4 files changed, 119 insertions(+), 63 deletions(-) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index cac82aee..0c7e2fe8 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -1,6 +1,6 @@ set(NAME glm-doc) -file(GLOB ROOT_TXT *.doxy ../*.txt) +file(GLOB ROOT_TXT *.doxy ../*.txt ./theme/*.css) file(GLOB ROOT_CPP src/*.cpp) file(GLOB ROOT_XML src/*.xml) file(GLOB ROOT_XSL src/*.xsl) diff --git a/doc/common/style.css b/doc/common/style.css index 872a8d28..af665bec 100644 --- a/doc/common/style.css +++ b/doc/common/style.css @@ -1,13 +1,15 @@ body { - background-color:#fff8f0; + background-color:#000000; + margin:0px; + padding:0px; width:100%; } table { background-color:#ffffff; - width:800px; + width:1000px; margin-left:auto; margin-right:auto; } @@ -189,12 +191,12 @@ a.menu */ a.menu { - color:#008000; + color:#000000; } a { - color:#008000; + color:#000000; } div.issue-content diff --git a/doc/theme/doxygen.css b/doc/theme/doxygen.css index 9f21e2d0..f146cb93 100644 --- a/doc/theme/doxygen.css +++ b/doc/theme/doxygen.css @@ -8,10 +8,23 @@ body, table, div, p, dl body { - background-color: #FFC080; - /*width:1024px;*/ - margin-left:auto; - margin-right:auto; + margin:0px; + padding:0px; + background-color:#000000; + background-repeat:no-repeat; + background-position:center center; + background-attachment:fixed; +/* + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFF8F0 5%, #FFEEDD 95%, #FFDDBB); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.05,#FFF8F0), color-stop(0.05,#FFF8F0), color-stop(0.95,#FFEEDD), to(#FFDDBB)); +*/ + min-height:1200px; + overflow:auto; +} + +p +{ + background-color:#FFFFFF; } /* @group Heading Levels */ @@ -19,16 +32,19 @@ body h1 { color:#FF8000; + font-family:Century; font-size: 150%; } h2 { color:#FF8000; + font-family:Century; font-size: 120%; } h3 { + font-family:Century; font-size: 100%; } @@ -103,11 +119,24 @@ a { .contents a:visited { color: #606060; } -/* + .contents{ - background-color: #FFF8F0; + background-color: #FFFFFF; + margin:0px; + margin-left:auto; + margin-right:auto; + padding:0px; + width:1000px; } -*/ + +div.textblock{ + background-color: #FFFFFF; + padding-top: 4px; + padding-bottom: 4px; + padding-left: 32px; + padding-right: 32px; +} + a:hover { text-decoration: underline; } @@ -120,7 +149,7 @@ a.qindexHL { font-weight: bold; background-color: #9CAFD4; color: #ffffff; - border: 1px double #869DCA; + border: 0px double #869DCA; } .contents a.qindexHL:visited { @@ -129,6 +158,11 @@ a.qindexHL { a.el { font-weight: bold; +/* + font-family: Century; + font-size: 150%; + color:#FF8000; +*/ } a.elRef { @@ -193,20 +227,6 @@ div.groupText { font-style: italic; } -body { - background: white; - color: black; - margin: 0; -} - -div.contents -{ - background-color:#FFF8F0; - padding-top: 10px; - padding-left: 10px; - padding-right: 10px; -} - td.indexkey { font-weight: bold; border: 0px solid #C4CFE5; @@ -248,8 +268,13 @@ div.center img { } address.footer { + margin-left:auto; + margin-right:auto; + width:1000px; + text-align: right; padding-right: 12px; + color: #FFEEDD; } img.footer { @@ -347,6 +372,9 @@ hr { hr.footer { height: 1px; + margin-left:auto; + margin-right:auto; + width:1000px; } /* @group Member Descriptions */ @@ -398,7 +426,7 @@ table.memberdecls { .memnav { background-color: #EBEFF6; - border: 1px solid #A3B4D7; + border: 0px solid #A3B4D7; text-align: center; margin: 2px; margin-right: 15px; @@ -406,7 +434,7 @@ table.memberdecls { } .memitem { - padding: 0; + padding: 8px; margin-bottom: 10px; } @@ -417,9 +445,9 @@ table.memberdecls { } .memproto { - border-top: 1px solid #FF8000; - border-left: 1px solid #FF8000; - border-right: 1px solid #FF8000; + border-top: 0px solid #FF8000; + border-left: 0px solid #FF8000; + border-right: 0px solid #FF8000; padding: 6px 0px 6px 0px; color: #253555; font-weight: bold; @@ -438,14 +466,15 @@ table.memberdecls { -webkit-border-top-left-radius: 8px; /*background-image:url('nav_f.png');*/ background-repeat:repeat-x; - background-color: #FFF8F0; - + background-color: #FFFFFF; + background-image: -moz-linear-gradient(center top, #FFF8F0 0%, #FFFFFF 60%, #FFFFFF 95%, #FFFFFF); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFF8F0), color-stop(0.2,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#FFFFFF), to(#FFFFFF)); } .memdoc { - border-bottom: 1px solid #FF8000; - border-left: 1px solid #FF8000; - border-right: 1px solid #FF8000; + border-bottom: 0px solid #FF8000; + border-left: 0px solid #FF8000; + border-right: 0px solid #FF8000; padding: 2px 5px; background-color: #FFFFFF; border-top-width: 0; @@ -457,12 +486,12 @@ table.memberdecls { -moz-border-radius-bottomleft: 8px; -moz-border-radius-bottomright: 8px; -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #FFF0E0 95%, #FFF8F0); + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #FFF8F0 90%, #FFEEDD); /* webkit specific markup */ -webkit-border-bottom-left-radius: 8px; -webkit-border-bottom-right-radius: 8px; -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#FFF0E0), to(#FFF8F0)); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.90,#FFF8F0), to(#FFEEDD)); } .paramkey { @@ -611,7 +640,7 @@ table.doxtable { } table.doxtable td, table.doxtable th { - border: 1px solid #2D4068; + border: 0px solid #2D4068; padding: 3px 7px 2px; } @@ -628,7 +657,7 @@ table.doxtable th { top: 0px; left: 10px; height: 36px; - background-image: url('tab_b.png'); + /*background-image: url('tab_b.png');*/ z-index: 101; overflow: hidden; font-size: 13px; @@ -637,12 +666,9 @@ table.doxtable th { .navpath ul { font-size: 11px; - background-image:url('tab_b.png'); - background-repeat:repeat-x; + background-color: #FFEEDD; height:30px; line-height:30px; - color:#8AA0CC; - border:solid 1px #C2CDE4; overflow:hidden; margin:0px; padding:0px; @@ -654,10 +680,9 @@ table.doxtable th { float:left; padding-left:10px; padding-right:15px; - background-image:url('bc_s.png'); + /*background-image:url('bc_s.png');*/ background-repeat:no-repeat; background-position:right; - color:#364D7C; } .navpath li.navelem a @@ -675,18 +700,17 @@ table.doxtable th { .navpath li.footer { - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color:#364D7C; - font-size: 8pt; + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#FFEEDD; + font-size: 8pt; } - div.summary { float: right; @@ -716,16 +740,24 @@ div.ingroups a div.header { - /*background-image:url('nav_h.png');*/ - background-repeat:repeat-x; - background-color: #FFF8F0; - margin: 0px; + background-color:#FFEEDD; + background-image: -moz-linear-gradient(center top, #FFEEDD 0%, #FFEEDD 5%, #FFEEDD 80%, #FFFFFF); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFEEDD), color-stop(0.05,#FFEEDD), color-stop(0.05,#FFEEDD), color-stop(0.80,#FFEEDD), to(#FFFFFF)); + + padding:0px; + margin:0px; + margin-left:auto; + margin-right:auto; + width:1000px; border-bottom: 0px solid #FFC080; } div.headertitle { - padding: 5px 5px 5px 10px; + margin: 0px; + padding: 5px; + padding-bottom:10px; + padding-top:10px; } dl @@ -742,7 +774,7 @@ dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.note { - border-color: #D0D000; + border-color: #FFDDBB; } dl.warning, dl.attention @@ -814,9 +846,14 @@ dl.bug margin: 0px; width: 100%; border-bottom: 0px solid #FF8000; + background-color:#FFFFFF; } #top { + margin-left:auto; + margin-right:auto; + width:1000px; + /*background-color:#000000;*/ } diff --git a/doc/theme/tabs.css b/doc/theme/tabs.css index d315e35b..636277d9 100644 --- a/doc/theme/tabs.css +++ b/doc/theme/tabs.css @@ -1,4 +1,7 @@ .tabs, .tabs2, .tabs3 { + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 5%, #FFEEDD 95%, #FFEEDD); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.05,#FFFFFF), color-stop(0.05,#FFFFFF), color-stop(0.95,#FFEEDD), to(#FFEEDD)); + /*background-image: url('tab_b.png');*/ background-color:#FFF8F0; width: 100%; @@ -22,6 +25,10 @@ .tablist li { float: left; display: table-cell; + + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 5%, #FFEEDD 95%, #FFEEDD); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.05,#FFFFFF), color-stop(0.05,#FFFFFF), color-stop(0.95,#FFEEDD), to(#FFEEDD)); + /*background-image: url('tab_b.png');*/ line-height: 36px; list-style: none; @@ -31,6 +38,10 @@ display: block; padding: 0 20px; font-weight: bold; + + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 5%, #FFEEDD 95%, #FFEEDD); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.05,#FFFFFF), color-stop(0.05,#FFFFFF), color-stop(0.95,#FFEEDD), to(#FFEEDD)); + /*background-image:url('tab_s.png');*/ background-repeat:no-repeat; background-position:right; @@ -45,6 +56,9 @@ } .tablist a:hover { + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 5%, #FFEEDD 95%, #FFEEDD); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.05,#FFFFFF), color-stop(0.05,#FFFFFF), color-stop(0.95,#FFEEDD), to(#FFEEDD)); + /*background-image: url('tab_h.png');*/ background-color:#FFFEFD; background-repeat:repeat-x; @@ -54,6 +68,9 @@ } .tablist li.current a { + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 5%, #FFEEDD 95%, #FFEEDD); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.05,#FFFFFF), color-stop(0.05,#FFFFFF), color-stop(0.95,#FFEEDD), to(#FFEEDD)); + /*background-image: url('tab_a.png');*/ background-color:#FFFEFD; background-repeat:repeat-x; From 17e87c1476277359e0d1e70a8dcf758e767a282c Mon Sep 17 00:00:00 2001 From: Christophe Riccio <g.truc.creation@gmail.com> Date: Thu, 10 Feb 2011 14:43:53 +0000 Subject: [PATCH 18/22] Updated G-Truc logo --- doc/common/g-truc.png | Bin 0 -> 16744 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/common/g-truc.png diff --git a/doc/common/g-truc.png b/doc/common/g-truc.png new file mode 100644 index 0000000000000000000000000000000000000000..508247b5aeff9994d7cb66e1f26960560952bfd2 GIT binary patch literal 16744 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 P00000NkvXXu0mjfY<ZM5 literal 0 HcmV?d00001 From 449c639404e496865b80569b74d58eb893ad2e1e Mon Sep 17 00:00:00 2001 From: Christophe Riccio <g.truc.creation@gmail.com> Date: Thu, 10 Feb 2011 14:44:31 +0000 Subject: [PATCH 19/22] Updated website theme --- doc/common/style.css | 36 +++++++++++------------------------- doc/src/data.xml | 12 ++++++------ doc/src/news.xsl | 6 +++--- 3 files changed, 20 insertions(+), 34 deletions(-) diff --git a/doc/common/style.css b/doc/common/style.css index af665bec..6bea5cdd 100644 --- a/doc/common/style.css +++ b/doc/common/style.css @@ -1,5 +1,7 @@ body { + font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; + font-size: 12px; background-color:#000000; margin:0px; padding:0px; @@ -26,14 +28,8 @@ table.principale border-style:none; border-width:0px; border-spacing:0px; - margin-top: 0px; - margin-bottom: 0px; - margin-right: 0px; - margin-left: 0px; - padding-right: 0px; - padding-left: 0px; - padding-bottom: 0px; - padding-top: 0px; + margin: 0px; + padding: 0px; width:100%; } @@ -43,14 +39,8 @@ tr.principale border-style:none; border-width:0px; border-spacing:0px; - margin-top: 0px; - margin-bottom: 0px; - margin-right: 0px; - margin-left: 0px; - padding-right: 0px; - padding-left: 0px; - padding-bottom: 0px; - padding-top: 0px; + margin: 0px; + padding: 0px; } div.title1 @@ -78,8 +68,9 @@ div.title3 border-width:1px; } -div.title4 +h3 { + font-family:Century; text-align:left; font-size:16px; font-weight:bolder; @@ -97,14 +88,15 @@ div.title-date div.menu1 { text-align:center; - font-size:16px; + font-size:12px; font-weight:bolder; + padding:16px; } div.menu2 { text-align:center; - font-size:16px; + font-size:12px; } div.news-separator @@ -138,12 +130,6 @@ div.paragraph text-align:justify; } -div.block -{ - padding-right: 16px; - padding-left: 16px; -} - div.include { color:#0000FF; diff --git a/doc/src/data.xml b/doc/src/data.xml index 0f9f2553..21a96085 100644 --- a/doc/src/data.xml +++ b/doc/src/data.xml @@ -2839,10 +2839,10 @@ </menu-group> <menu-group name="Documentation"> - <menu-entry name="GLM Manual" href="./glm-manual.pdf" /> - <menu-entry name="GLM API" href="./html/index.html" /> + <menu-entry name="GLM Manual" href="./glm-0.9.1.pdf" /> + <menu-entry name="GLM API" href="./html-0.9.1/index.html" /> <menu-entry name="Code samples" href="./code.html" /> - <menu-entry name="GLSL Specification" href="http://www.opengl.org/registry/doc/GLSLangSpec.4.00.8.clean.pdf" /> + <menu-entry name="GLSL Specification" href="http://www.opengl.org/registry/doc/GLSLangSpec.4.10.6.clean.pdf" /> <menu-entry name="OpenGL.org Toolkits forum" href="http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=postlist&Board=10&page=1" /> <!--menu-entry name="Usage" href="./usage.html" /--> </menu-group> @@ -2856,10 +2856,10 @@ </menu-group> <menu-link> - <menu-pic name="G-Truc" image="./common/g-truc.jpg" href="http://www.g-truc.net" /> - <menu-pic name="SourceForge" image="./common/sourceforge.gif" href="http://www.sourceforge.net" /> + <menu-pic name="G-Truc" image="./common/g-truc.png" href="http://www.g-truc.net" /> <menu-pic name="OpenGL" image="./common/opengl.jpg" href="http://www.opengl.org" /> - </menu-link> + <menu-pic name="SourceForge" image="./common/sourceforge.gif" href="http://www.sourceforge.net" /> + </menu-link> </menu> </glm> diff --git a/doc/src/news.xsl b/doc/src/news.xsl index 44d895ce..271da37d 100644 --- a/doc/src/news.xsl +++ b/doc/src/news.xsl @@ -56,9 +56,9 @@ <div class="title-date"> <xsl:value-of select="./@date" /> </div> - <div class="title4"> - <xsl:value-of select="./@title" /> - </div> + <h3> + <xsl:value-of select="./@title" /> + </h3> <div> <xsl:if test="./paragraph"> <xsl:apply-templates select="./paragraph" /> From ec02194f97c2deec9905e41d44cdbcd69aa6944b Mon Sep 17 00:00:00 2001 From: Christophe Riccio <g.truc.creation@gmail.com> Date: Thu, 10 Feb 2011 14:46:04 +0000 Subject: [PATCH 20/22] removed old files --- doc/common/doxygen/doxygen.css | 475 --------------------------------- doc/common/doxygen/doxygen.png | Bin 1737 -> 0 bytes doc/common/doxygen/tab_b.gif | Bin 807 -> 0 bytes doc/common/doxygen/tab_l.gif | Bin 1347 -> 0 bytes doc/common/doxygen/tab_r.gif | Bin 3258 -> 0 bytes doc/common/doxygen/tabs.css | 102 ------- doc/common/g-truc.jpg | Bin 3660 -> 0 bytes 7 files changed, 577 deletions(-) delete mode 100644 doc/common/doxygen/doxygen.css delete mode 100644 doc/common/doxygen/doxygen.png delete mode 100644 doc/common/doxygen/tab_b.gif delete mode 100644 doc/common/doxygen/tab_l.gif delete mode 100644 doc/common/doxygen/tab_r.gif delete mode 100644 doc/common/doxygen/tabs.css delete mode 100644 doc/common/g-truc.jpg diff --git a/doc/common/doxygen/doxygen.css b/doc/common/doxygen/doxygen.css deleted file mode 100644 index 65123996..00000000 --- a/doc/common/doxygen/doxygen.css +++ /dev/null @@ -1,475 +0,0 @@ -BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { - font-family: Geneva, Arial, Helvetica, sans-serif; -} -BODY,TD { - font-size: 90%; -} -H1 { - text-align: center; - font-size: 160%; -} -H2 { - font-size: 120%; -} -H3 { - font-size: 100%; -} -CAPTION { - font-weight: bold -} -DIV.qindex { - width: 100%; - background-color: #ff8000;/*#e8eef2;*/ - border: 1px solid #ff8000; - text-align: center; - margin: 2px; - padding: 2px; - line-height: 140%; -} -DIV.navpath { - width: 100%; - background-color: #ff8000;/*e8eef2*/ - border: 1px solid #ff8000; - text-align: center; - margin: 2px; - padding: 2px; - line-height: 140%; -} -DIV.navtab { - background-color: #ff8000;/*#e8eef2;*/ - border: 1px solid #ff8000; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} -TD.navtab { - font-size: 70%; -} -A.qindex { - text-decoration: none; - font-weight: bold; - color: #ff8000; -} -A.qindex:visited { - text-decoration: none; - font-weight: bold; - color: #ff8000 -} -A.qindex:hover { - text-decoration: none; - background-color: #ffe0c0; -} -A.qindexHL { - text-decoration: none; - font-weight: bold; - background-color: #ffe0c0; - color: #ffffff; - border: 1px double #ffe0c0; -} -A.qindexHL:hover { - text-decoration: none; - background-color: #ffe0c0; - color: #ffffff; -} -A.qindexHL:visited { - text-decoration: none; - background-color: #ffe0c0; - color: #ffffff -} -A.el { - text-decoration: none; - font-weight: bold -} -A.elRef { - font-weight: bold -} -A.code:link { - text-decoration: none; - font-weight: normal; - color: #ff8000 -} -A.code:visited { - text-decoration: none; - font-weight: normal; - color: #ff8000 -} -A.codeRef:link { - font-weight: normal; - color: #ff8000 -} -A.codeRef:visited { - font-weight: normal; - color: #ff8000 -} -A:hover { - text-decoration: none; - background-color: #f2f2ff -} -DL.el { - margin-left: -1cm -} -.fragment { - font-family: monospace, fixed; - font-size: 95%; -} -PRE.fragment { - border: 1px solid #CCCCCC; - background-color: #f5f5f5; - margin-top: 4px; - margin-bottom: 4px; - margin-left: 2px; - margin-right: 8px; - padding-left: 6px; - padding-right: 6px; - padding-top: 4px; - padding-bottom: 4px; -} -DIV.ah { - background-color: black; - font-weight: bold; - color: #ffffff; - margin-bottom: 3px; - margin-top: 3px -} - -DIV.groupHeader { - margin-left: 16px; - margin-top: 12px; - margin-bottom: 6px; - font-weight: bold; -} -DIV.groupText { - margin-left: 16px; - font-style: italic; - font-size: 90% -} -BODY { - background: white; - color: black; - margin-right: 20px; - margin-left: 20px; -} -TD.indexkey { - background-color: #fff0e0;/*#e8eef2;*/ - font-weight : normal; - padding-right : 10px; - padding-top : 8px; - padding-left : 10px; - padding-bottom : 8px; - margin-left : 0px; - margin-right : 0px; - margin-top : 2px; - margin-bottom : 2px; - border: 0px solid #CCCCCC; - -moz-border-radius: 8px 8px 8px 8px; -} -TD.indexvalue { - background-color: #fff0e0;/*#e8eef2;*/ - font-style: italic; - padding-right : 10px; - padding-top : 8px; - padding-left : 10px; - padding-bottom : 8px; - margin-left : 0px; - margin-right : 0px; - margin-top : 2px; - margin-bottom : 2px; - border: 0px solid #CCCCCC; - -moz-border-radius: 8px 8px 8px 8px; -} -TR.memlist { - background-color: #f0f0f0; -} -P.formulaDsp { - text-align: center; -} -IMG.formulaDsp { -} -IMG.formulaInl { - vertical-align: middle; -} -SPAN.keyword { color: #008000 } -SPAN.keywordtype { color: #604020 } -SPAN.keywordflow { color: #e08000 } -SPAN.comment { color: #800000 } -SPAN.preprocessor { color: #806020 } -SPAN.stringliteral { color: #002080 } -SPAN.charliteral { color: #008080 } -SPAN.vhdldigit { color: #ff00ff } -SPAN.vhdlchar { color: #000000 } -SPAN.vhdlkeyword { color: #700070 } -SPAN.vhdllogic { color: #ff0000 } - -.mdescLeft { - padding: 0px 8px 4px 8px; - font-size: 80%; - font-style: italic; - background-color: #FAFAFA; - border-top: 1px none #E0E0E0; - border-right: 1px none #E0E0E0; - border-bottom: 1px none #E0E0E0; - border-left: 1px none #E0E0E0; - margin: 0px; -} -.mdescRight { - padding: 0px 8px 4px 8px; - font-size: 80%; - font-style: italic; - background-color: #FAFAFA; - border-top: 1px none #E0E0E0; - border-right: 1px none #E0E0E0; - border-bottom: 1px none #E0E0E0; - border-left: 1px none #E0E0E0; - margin: 0px; -} -.memItemLeft { - padding: 1px 0px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: solid; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - background-color: #FAFAFA; - font-size: 80%; -} -.memItemRight { - padding: 1px 8px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: solid; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - background-color: #FAFAFA; - font-size: 80%; -} -.memTemplItemLeft { - padding: 1px 0px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: none; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - background-color: #FAFAFA; - font-size: 80%; -} -.memTemplItemRight { - padding: 1px 8px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: none; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - background-color: #FAFAFA; - font-size: 80%; -} -.memTemplParams { - padding: 1px 0px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: solid; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - color: #606060; - background-color: #FAFAFA; - font-size: 80%; -} -.search { - color: #003399; - font-weight: bold; -} -FORM.search { - margin-bottom: 0px; - margin-top: 0px; -} -INPUT.search { - font-size: 75%; - color: #402000; - font-weight: normal; - background-color: #ffe0c0; -} -TD.tiny { - font-size: 75%; -} -a { - color: #402000; -} -a:visited { - color: #804000; -} -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid #fff0e0; -} -TH.dirtab { - background: #fff0e0; - font-weight: bold; -} -HR { - height: 1px; - border: none; - border-top: 1px solid black; -} - -/* Style for detailed member documentation */ -.memtemplate { - font-size: 80%; - color: #606060; - font-weight: normal; - margin-left: 3px; -} -.memnav { - background-color: #ffe0c0; - border: 1px solid #ffe0c0; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} -.memitem { - padding: 4px; - background-color: #fff0e0; - border-width: 1px; - border-style: solid; - border-color: #fff0e0; - -moz-border-radius: 8px 8px 8px 8px; -} -.memname { - white-space: nowrap; - font-weight: bold; -} -.memdoc{ - padding-left: 10px; -} -.memproto { - background-color: #ffe0c0; - width: 100%; - border-width: 1px; - border-style: solid; - border-color: #ffe0c0; - font-weight: bold; - -moz-border-radius: 8px 8px 8px 8px; -} -.paramkey { - text-align: right; -} -.paramtype { - white-space: nowrap; -} -.paramname { - color: #602020; - font-style: italic; - white-space: nowrap; -} -/* End Styling for detailed member documentation */ - -/* for the tree view */ -.ftvtree { - font-family: sans-serif; - margin:0.5em; -} -/* these are for tree view when used as main index */ -.directory { - font-size: 9pt; - font-weight: bold; -} -.directory h3 { - margin: 0px; - margin-top: 1em; - font-size: 11pt; -} - -/* The following two styles can be used to replace the root node title */ -/* with an image of your choice. Simply uncomment the next two styles, */ -/* specify the name of your image and be sure to set 'height' to the */ -/* proper pixel height of your image. */ - -/* .directory h3.swap { */ -/* height: 61px; */ -/* background-repeat: no-repeat; */ -/* background-image: url("yourimage.gif"); */ -/* } */ -/* .directory h3.swap span { */ -/* display: none; */ -/* } */ - -.directory > h3 { - margin-top: 0; -} -.directory p { - margin: 0px; - white-space: nowrap; -} -.directory div { - display: none; - margin: 0px; -} -.directory img { - vertical-align: -30%; -} -/* these are for tree view when not used as main index */ -.directory-alt { - font-size: 100%; - font-weight: bold; -} -.directory-alt h3 { - margin: 0px; - margin-top: 1em; - font-size: 11pt; -} -.directory-alt > h3 { - margin-top: 0; -} -.directory-alt p { - margin: 0px; - white-space: nowrap; -} -.directory-alt div { - display: none; - margin: 0px; -} -.directory-alt img { - vertical-align: -30%; -} - diff --git a/doc/common/doxygen/doxygen.png b/doc/common/doxygen/doxygen.png deleted file mode 100644 index c2877691941ff9a126671b84fa08f34360446307..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1737 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 diff --git a/doc/common/doxygen/tab_b.gif b/doc/common/doxygen/tab_b.gif deleted file mode 100644 index eeb81d484d8a9d20b60fb7bb1876b53a73b487be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 807 zcmb`Gu}!mK41_OIkSJM!p3V*E??H?~<2ka1x5)rrfjJP>{m;EKU@7|I*goH#zkGbY zzrKB4bkUCzxAVE3$BpckxZm&QcgyF&lWzpS{auvQ(ny<4WL2tGjcQd+u}j_RQLozR zozk>sG^=q&x3sMt?P|kRF1h8A7uo?1G*}GN?d(Z()l_YjvzDy8daAeDVL@@aW@@&^ zAw}<Y?bL3q;mByY%TwMmTVV|tq+tmyYAgmDXs{S|1SKb?d%GQdtR<W2*&atOEGX{u zZm&@fDSF$}-Zt{^1DZ@@2l^p_LRbR^X;{(<4;F(BG+2&vDU%aB;~0rP){^bc8efqM z3yR|%<0DRE0K90&Xw+gQen69H?0^%3Q3z|mAk8GS;K5?Bfp$)mZp!3@xfn*GkF{ib zUb6Ul?w#T}VQfBEN$)W_t{?9*dhEy%j=~@v(z(gu5#R&O>%f&T4^6Ck{=HtLC%xpY O&VNFWSA9QR_3uApKU^yS diff --git a/doc/common/doxygen/tab_l.gif b/doc/common/doxygen/tab_l.gif deleted file mode 100644 index 73cb1c579a288aedcf4d12f7281eab4a6b996756..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1347 zcmZ?wbhEHb<YdrcY-eEj+sW~Nme&8(p8pS5{Xf?5|3u6GvlISbng9Rh>i@S^|G&TO z|NZU%AME=7?CAgJC;z`X|Nr%+|8K7Re|zo!hdcj2-2MOQ!T&GM{(pV(|J$qo-{1WI z@&5nMkN<yt`TzUd|Gz)~|NHa*|9^&2Fd71bH3SrYvH+d-pFs!YKv14w;P}tr$YJB) z-~be0krGHaz}Uto=O7^=aIo36o1Mj_;Y6Zy8xJ#A#fupan>-o0J>pgzFk)cs*N*gK zc(8HFnVF{Helrvp4;-IiQ~htv0bwSV`G%@C1qT=!JQoQ_7-T${vXo^Rmk7fINz?46 zwE>bE9t{j{TG*3L=H2Zq%ZZ$sd-ag-?`au#w&%Q@wRd;;`<U(7=YMUrjxczzzv#1^ z+MXL5VvcpnUY~kryJ7sIDT4m{cqH?motrA39;P$v^Ye?#eOG_;t}1?bwLQAMEO%z< ztLr<G@2@*+ZS>~S&RX{6yfNSNADv*9pMO^7bJ5wesm}BHZvFi5?CR3+`+dJGzn{KU zF8*Kqp7qZ!AMWjrU%qai&9`rl&!&s(%h&yV{^I(1|Ni;^sy|HPWMOh-QkXKqg~xJ1 zV}r2khsFlxtS<+fnc7?wTQnRs6d1%ZG%hsCHCa6DVCczs#IEZ1!jWCJ;DBS7cG(j_ z2Ay3$0zFN3MFg{oKUs0f%VgV(;C{oRf@C&^h$~8-9;<ewxNFvJcr+<+RYu@cHMt6< zF1flJsvHVg5^62Uc|THT#+7xd%}C$2a@lOfLz>Ixq+H5;HoM~3%;$5euibn;w~Fo5 z@&$E5TrU=Mh|PMju*>Y!i^Z8zQZE-xwu;hRlJl?f<+7Pxw=|c|kCM__mOU*?efhF1 zE3H+_*S*SGHSdrD*Qzy(E_r3G-nMB~*1GkNUcFwo|CrR9HHWW7y;*ypOj3Zs8UW~U BU_$@^ diff --git a/doc/common/doxygen/tab_r.gif b/doc/common/doxygen/tab_r.gif deleted file mode 100644 index f404572d02f4cff2ec2c00be8f9345bde5a947b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3258 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 diff --git a/doc/common/doxygen/tabs.css b/doc/common/doxygen/tabs.css deleted file mode 100644 index 308ff66d..00000000 --- a/doc/common/doxygen/tabs.css +++ /dev/null @@ -1,102 +0,0 @@ -/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ - -DIV.tabs -{ - float : left; - width : 100%; - background : url("tab_b.gif") repeat-x bottom; - margin-bottom : 4px; -} - -DIV.tabs UL -{ - margin : 0px; - padding-left : 10px; - list-style : none; -} - -DIV.tabs LI, DIV.tabs FORM -{ - display : inline; - margin : 0px; - padding : 0px; -} - -DIV.tabs FORM -{ - float : right; -} - -DIV.tabs A -{ - float : left; - background : url("tab_r.gif") no-repeat right top; - border-bottom : 1px solid #FF8000; - font-size : x-small; - font-weight : bold; - text-decoration : none; -} - -DIV.tabs A:hover -{ - background-position: 100% -150px; -} - -DIV.tabs A:link, DIV.tabs A:visited, -DIV.tabs A:active, DIV.tabs A:hover -{ - color: #000000;/*#1A419D;*/ -} - -DIV.tabs SPAN -{ - float : left; - display : block; - background : url("tab_l.gif") no-repeat left top; - padding : 5px 9px; - white-space : nowrap; -} - -DIV.tabs INPUT -{ - float : right; - display : inline; - font-size : 1em; -} - -DIV.tabs TD -{ - font-size : x-small; - font-weight : bold; - text-decoration : none; -} - - - -/* Commented Backslash Hack hides rule from IE5-Mac \*/ -DIV.tabs SPAN {float : none;} -/* End IE5-Mac hack */ - -DIV.tabs A:hover SPAN -{ - background-position: 0% -150px; -} - -DIV.tabs LI.current A -{ - background-position: 100% -150px; - border-width : 0px; -} - -DIV.tabs LI.current SPAN -{ - background-position: 0% -150px; - padding-bottom : 6px; -} - -DIV.navpath -{ - background : none; - border : none; - border-bottom : 1px solid #FF8000; -} diff --git a/doc/common/g-truc.jpg b/doc/common/g-truc.jpg deleted file mode 100644 index 50e2f8dbae9de18939108b2dd14fc676a7ff4c9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3660 zcmbW3c{r49`^RtlR@n=MCu=b^Bv~`BvJIhxk!?a6%Y#PBs4??U_U*A3A|_3UiHLgC zG{zFjR793yMk*w8XX(Z)zj=P|`uqL!zQ=oB$93HIbzI;3JdV$KUf1`y`S1BNfSj`f z(g6?>5(f4N2Ed;Ljtf@*K7@q@-w0&Fe~*8@3ICboUo!k3+27^=_Q`(^$V&p6fRBif z79cDyBqA@w?-r~9A+f*a2L2X8!Xlz#;u4Zl(lP=;n;al4BqAa#Dk3H(Dk@MX3ibg} zc`=2(#<t>$r-CH3uu6xL@~b7ak2TYjJ>IZ&OoC&RrKET6Qc+dY)zja%-{7$65i@fO z%j0(T4vtPp=hL2E-YB0lz9HvA&tt;EBQC~Wx*U&7xN_}!N@`kqMrJ`_QE^G>jhkgP zq&u~D$@l8&TOPKyJ!<cG{G^NC-P7CmqJQA+@W{K-vG?N>OxEnDxzAs|&M$yJR#w;6 ze?l9Ze{u-{BL67aU%~z#m%M;WSX5L*RN_xAA>nwz6p<Gd+iNVYV0%g;2&<@dC`nT3 zSblXgO-kFugRLAK`$l@F&S9o5_$S)`lKp33$^RAEKfwOUH34iB5fU^{L>@o@pbHU# zIdT*WtYf$}%?z#rBA48;3WfNcB+}0Dftm8U_V}gU*+NxNtEPr5cAou=nj$^LW~8<; zRG@24Y-(!jVvb+HSj_F=)~7b(wk4kzn2&1a(tTz{E?PB9scBoa)E6Ka{_fvq*jh^U zEMseQkLSKq*<_1BqkfX)F~c&CqS}04<4o5_6G*+uW-cjv^D2(wmV$SKYcVU1?3Pva ztn={kACSBLO9k0t;7lJZM1{N`*;?S*evWtvOQd0lGiCJ-%M*?&e4zd)`0XbnCZ(-W zg0r)VCsk1%Pk4KSrpgDhEI?>oqe^;_ZN{Wtqhg5fP2AqDCZd=wywR#hZjbLyF2H9J zt=!beX*~5T$lFD1^x(Oc$9Z%xD&Lt8koxcWSHt(UwU=qaf0(W35YsJ}``~I3&k#`1 zU5)`r&bpLtn!(e6V(2Znc!%L~@6;)urnEa7Ez7BM$DBfuI=jpi2M;cNe@;NqrfsJI z^PfjwK1d)0_2Ley(O(z)YhW^8L07U@+??~t9!)Z^5<8FrclLk%(xB^>T6-p0b$^{^ zGFx`(IB3=VQFqA50+p7a7tp2ht98SSNj7HGXw9Sw<E^wXHuxh0BWs*+&a<fQb1~CJ zHjwQ}(lyoPK0D3_#G3g)a>(rsYIru557=SWlWZ!hq!a6jP$HS5xQmyI;R8mDB{4oQ zR6{L=ClT35cxIq=>+7}YY#S>!l@_%tpzOop4+cEHM08JC`PAMLD|1-NHzU7~oxijg z^vAxJF#cqu-nS&rmf%U{Y{9<r%%E@<T$K|Bk-<$m{o=u@5avd3b1VC2#wAysKpY{! z7YctJp6@Hs(NczULHp}=QV(l{XpOx>ZSGB!ZQg@)xei5ULwq35WMg2Ml;25FcS|uJ zNiis14CVvxHgV=b^KMwLi2HUV@e#kz5%5nSqHQQwKP!xlkUR$=6wNE|G<u}%IG4~H z>ayM0wE9?+zI-lkgj7nGIacfB&~_=aV*jI>X{&7XYM~itCzU5v&|S=}T`6I3@+lLd z*gRs2X}(~ilqXf$y~M3GsoEq}X{O<SLMU|qmo7d4>E<n61<_rVyTGOlCR!$}QXRZh z5MgOQon?(Chdtbl9C5)Mc$Il)_%HfN1x|e>Ze!h*eyLs?X)Mie43NSs&E^^4c6A4e zk9=>-OYRT72x=_S>#gl;p!gFbOO5c>r{|YZZ#!R*-hPL{8!@>K2HqAbFY^z3+$UZw z<cbo~EqWvKUi^qrHR)uS4HSbaS1i8BdN$a@?5z#IWXB#okWuG+jSrCDg%3mZwus?F zvJ;Vewya)4@o7+b(!=bZx~?pCt6{Lg=<O1NN~tX;y2a0^>;}hed|;j%;mNaX9ig_4 z3%uZA726f_p?y7n2-(Luvz!;wyaxICtO$&PI#b?cgPt(6CcfDVv5zJac5RJ;_Dy&t z=pmD;0J+m9#^`)N(FY>+UD3#5p(Vb?+#Nhv%{m~{EoC_GTUomO86Rl%dlB_LA6&83 ztpMG$3RJx;8F|!)h#o#LUXEfnrGZ5H`bW)?&QRtJJgR1LGGc;I|LSi4Mbo0@0B&;p zk<#V>TP>$tBV5==yS)ty`v?pQ=}_-nLa3%fM`}}0<>>~Lgo8!zaf6O}Pvu2VdY6U1 zX_yCUy&$<L1atX5qlM0ULx7#hbtyX8NNZbh)2{V>gigyF{o=RVaT_JQA%(nce&DI) zelzd5B9e^F`TI-U9ERXhWe6@+tod1LtM|nUVh;&gu*_d%_h$0c_EGBc1h!`*J($_i zG`+4~L|jSVGEY2;KYQI1wVgfe!n?iV&cllliiotMtu8nnhysex`$>Tu6q}M}UrHZz zjm5EsSC`y<+W&Ae{i8N6IEwT*MdpDAHfAol#(O*W$Rr=2sS8?DQ4m7>wpdC0+JwKP z-be0U_zI)W<WkvgK2l)_%*`1SyWk=kSUCGh:@w8&!p{z3KmK;;e#Wsq}e>o0f( zR+HLG=(4K*&QOZ+I`)?Px2c*|T{qM4p<1<~F}XJvYXd7n9qxNMnMw5rj=9fpklYG_ zF-Vd4%rSJ&fnxS2v^QU0*!uNtr>?W|{7B=mM&*)|#m?qsCrdP1m3^Z<7m$Ik$WZl+ zW+r9JhQL55Tc5f#Ta`wzhHf(d2p}x_fZj<_;-tm^jx7lLHerCH`0V=8L?V<mRY$kn zvkTWc^*N~c;YJmcGJ#@-{!GPRtjAx5%<kc@LhokvMylP@2{3S|F-RjX(zM>5)L(m? z%v^nZzZMppJ06nbp=5V1dn25iBsj)24eHFT3-hH<bPxc%`pueEmeo^7m#kUzl8AcB z+EC^BohBcA$vr0v2jw1D4W1XJlsVDrei8H-Mx>ckMK6z2EVL0Ij)&MmA7<4OF!bpY zRU~i6(;3DIRXe~E#39zUP?%ja?t})an5FHI9kh=ba$2Z6E@GIT802}6y}D3;D4C?% z>sI8;xtc;ex2(dRi-z}M_V^W?Pv}!RuY|qWcNRO|>zbJ&Emv!Pwi<O{kiB+~Y16h8 zF(~8QQf&^i)>pMOj@&TkX5i!REl}0qJR`h6`0Odm1$`}0@*Un56VIZ`MOePvyppaq zWD<0+F@A4~!jyBCnw-=v&+Xl)-as8tuK_G%jW)1|@*i)kp))irOHYn0>qaeN^wZZW z9(XJz#l)x&+==|XVUILPS{(6*p*y72&QY{Hd{diSemCP_(2r;jcn-Q%Clb2@n)`wA zgdT`CCp7m?`f0~SV1JjqASjt0k!GAEN_hE6&Q=tU;ohc+#!70ls1l}YIN1r!)yspp z!lSGc2x)ATbztbVt{J1(sb2YADzGD(6Yt{Yb-SfZ{S<w@77Xpp)FK!q%im)e<6l@i zPxVY8dpZKOm=oqx(?Zt<jeaLv$L*hkthFg;hDj=O5eHB`EdBKQqM)5j=OfVv-P!0_ zv!%U3Y{qk6voxM?1Wyi(>8bkdqeL4!^jQ_lHR?+z6kk2R>1)%-B1+=iJu{*@T`7HG zkLFGKV5t+kRj$AGPwz}wSsoAZY6m60y<_cO)`ZrTI=R(0hDXPGDLWUR-1mrlruQbQ zZC_&z8$H>ir+~Df+@p~v2PKE1q7R<6&tu4Ht{zX|1EM~H!i2eFO}qKP!?=f2u7=3N zE1Ym{wO(1cj&3C~w2<{UTnC1PA$2MW&lCs_tg66X!=u)fxwo3^3;Yx7q9l4L6SChL z;!p!-hB16V#_w#$kLLl<hoo#4bswDzBjhUKFk2GvL366?jbQBiU!%1TRl4Ml^m@hV zTRS#?#yeH38TEN?epjmqQSoS0_P8H88ruNxHkxk!nHzTDDzk#pz2}-t8Ea*aUP$Jv z1xIy1%`?n;&z?l|tr;clH1bWaGpPziL27YWIj_j$ih-va;k0QbPUILKIm^h>RJIX? zB3(gr&#m2oZw3Eashgi`9+j4%X?#EgXW}Su^bGr_120-&yk9y-@3vW~sfIp9hMp;y z94K6YuRqA^y8MNHWRu#ntcw2?TGe?{$a2hVL(BKG;M>EG#EO@U(R~x&O}^v<(W#r^ z<pb^IFCL+ab;VI$SzD5MJjrE2k>`g?z8^)b6R9mOJwGT4!?TzriRe;nPPb!hGu~U6 zdFU1W6TWZsaRzlJhst(+r-~jQlu+dZ1y8}5%}vfpO504#UG$r+>n0~O%!G=tk@UIM zx>L!yrwjU&1B>?@zOecLs_=(0TR$q~QGHeXtuL_aGU{OV@!q7u(yxKLdHsAq0g|<N zeqJ?3ojuz%=NWdA+z;zjnX*??F%Q}oguStFGb*7|O!gxxRYq#t0n3gj1wFx`zW48b z;p{(!p6cWSY{wW#UrXF@%W_t=j}ySiC0A=u74K1|X15$UvSm-0frjne-{v$qT*RHA YRcSC8>*0^2BN3a~uMitUME>~y0JpOHtpET3 From e430b096d42b51deb0550a519c5d00c913d81852 Mon Sep 17 00:00:00 2001 From: Christophe Riccio <g.truc.creation@gmail.com> Date: Thu, 10 Feb 2011 15:10:59 +0000 Subject: [PATCH 21/22] Updated theme --- doc/common/style.css | 2 +- doc/src/data.xml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/common/style.css b/doc/common/style.css index 6bea5cdd..a94b6a95 100644 --- a/doc/common/style.css +++ b/doc/common/style.css @@ -163,7 +163,7 @@ td.menu border-right-style:solid; border-color:#000000; width:160px; - padding-right: 32px; + padding-right: 0px; padding-left: 0px; padding-bottom: 0px; padding-top: 0px; diff --git a/doc/src/data.xml b/doc/src/data.xml index 21a96085..71b75046 100644 --- a/doc/src/data.xml +++ b/doc/src/data.xml @@ -2836,6 +2836,7 @@ <menu-entry name="About" href="./about.html" /> <menu-entry name="Downloads" href="./download.html" /> <menu-entry name="Goodies" href="./goodies.html" /> + <menu-entry name="OpenGL SDK page" href="http://www.opengl.org/sdk/libs/GLM/" /> </menu-group> <menu-group name="Documentation"> @@ -2849,16 +2850,15 @@ <menu-group name="Developer"> <!--menu-entry name="Contribute" href="./contribute.html" /--> - <menu-entry name="SF.net page" href="https://sourceforge.net/projects/ogl-math/" /> - <menu-entry name="Bug report" href="https://sourceforge.net/apps/trac/ogl-math" /> + <menu-entry name="Bug report" href="https://sourceforge.net/apps/trac/ogl-math" /> + <menu-entry name="SourceForge page" href="https://sourceforge.net/projects/ogl-math/" /> + <menu-entry name="G-Truc Creation page" href="http://www.g-truc.net/project-0016.html#menu" /> <menu-entry name="Browse Git repository" href="http://ogl-math.git.sourceforge.net/git/gitweb.cgi?p=ogl-math/ogl-math;a=summary" /> <menu-entry name="GIT HEAD snapshot" href="http://ogl-math.git.sourceforge.net/git/gitweb.cgi?p=ogl-math/ogl-math;a=snapshot;h=HEAD;sf=tgz" /> </menu-group> <menu-link> <menu-pic name="G-Truc" image="./common/g-truc.png" href="http://www.g-truc.net" /> - <menu-pic name="OpenGL" image="./common/opengl.jpg" href="http://www.opengl.org" /> - <menu-pic name="SourceForge" image="./common/sourceforge.gif" href="http://www.sourceforge.net" /> </menu-link> </menu> From 89d57a41ec0e34d2f78f79a78812713d82a954fe Mon Sep 17 00:00:00 2001 From: Christophe Riccio <g.truc.creation@gmail.com> Date: Thu, 10 Feb 2011 16:11:05 +0000 Subject: [PATCH 22/22] Moved about in front page --- doc/common/style.css | 6 ++++ doc/src/about.xsl | 2 +- doc/src/data.xml | 68 +++++++++++++++++++++++++++----------------- doc/src/download.xsl | 2 +- doc/src/link.xsl | 2 +- doc/src/news.xsl | 32 +++++++-------------- doc/src/util.xsl | 41 +++++++++++++++++++++++--- 7 files changed, 99 insertions(+), 54 deletions(-) diff --git a/doc/common/style.css b/doc/common/style.css index a94b6a95..36d4a28d 100644 --- a/doc/common/style.css +++ b/doc/common/style.css @@ -235,6 +235,12 @@ ul.code-list margin-right:0px; } +li +{ + list-style-position:inside; + padding-left:8px; +} + li.code-line { color:#008080; diff --git a/doc/src/about.xsl b/doc/src/about.xsl index 9684dc0d..102dac95 100644 --- a/doc/src/about.xsl +++ b/doc/src/about.xsl @@ -7,7 +7,7 @@ <xsl:template match="/"> <html> <head> - <title>OpenGL Mathematics : About</title> + <title>OpenGL Mathematics: About</title> <meta http-equiv="Content-Language" content="en" /> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=iso-8859-1" /> <meta name="copyright" content="G-Truc Creation" /> diff --git a/doc/src/data.xml b/doc/src/data.xml index 71b75046..f44f8a6a 100644 --- a/doc/src/data.xml +++ b/doc/src/data.xml @@ -2793,25 +2793,45 @@ </bug> </bugs> - <about-long date=" " title=" "> - <paragraph> - OpenGL Mathematics (GLM) is a C++ mathematics library for 3D software based on the OpenGL Shading Language (GLSL) specification. - </paragraph> - <paragraph> - The goal of the project is to provide to 3D programmers math classes and functions that miss in C++ when we use to program with GLSL or any high level GPU language. With GLM, the idea is to have a library that works the same way that GLSL which imply a strict following of GLSL specification for the implementation. - </paragraph> - <paragraph> - However, this project isn't limited by GLSL features. An extension system allows to extend GLSL capabilities. It allows GLM to be a great subtitute for some OpenGL 3 deprecated functions, to work following a clean programmable approach. - </paragraph> - <paragraph> - GLM is release under <link href="./copying.txt">MIT license</link> and available for all version of GCC from version 3.4 and Visual Studio from version 8.0 as a platform independent library. - </paragraph> - </about-long> + <about-long date=" " title=" "> + <paragraph> + OpenGL Mathematics (GLM) is a header only C++ mathematics library for graphics software + based on the <link href="http://www.opengl.org/documentation/glsl/">OpenGL Shading Language (GLSL)</link> specification. + </paragraph> + <paragraph> + GLM provides classes and functions designed and + implemented with the same naming conventions + and functionalities than GLSL so that + when a programmer knows GLSL, he knows GLM as well which makes it really easy to use. + </paragraph> + <paragraph> + This project isn't limited by GLSL features. + An extension system, based on the GLSL extension conventions, + provides extended capabilities: matrix transformations, + quaternions, half-based types, random numbers, etc... + </paragraph> + <paragraph> + This library works perfectly with OpenGL but it also ensures interoperability with other third party libraries and SDKs. It is a good candidate for software rendering (Raytracing / Rasterisation), image processing, physic simulations and any context that requires a simple and convenient mathematics library. + </paragraph> + <list name="GLM is written as a platform independent library with no dependence and officially supports the following compilers:"> + <list-element><link href="http://http://gcc.gnu.org/">GCC</link> 3.4 and higher</list-element> + <list-element><link href="http://llvm.org/">LLVM</link> 2.3 through GCC 4.2 front-end and higher</list-element> + <list-element><link href="http://msdn.microsoft.com/en-us/visualc/default">Visual C++</link> 2005 and higher</list-element> + <list-element>Any C++ compiler following C++98 norm</list-element> + </list> + <paragraph> + The source code is under the <link href="./copying.txt">MIT license</link>. + </paragraph> + <paragraph> + Thanks for contributing to the project by <link href="https://sourceforge.net/apps/trac/ogl-math/newticket">submitting tickets</link> for bug reports and feature requests. (SF.net account required). + Any feedback is welcome at <a href="mailto://glm@g-truc.net">glm@g-truc.net</a>. + </paragraph> + </about-long> - <about-short> - <element>GLSL + Optional features = OpenGL Mathematics (GLM).</element> - <element>A C++ mathematics library for 3D graphics.</element> - </about-short> + <about-short> + <element>GLSL + Optional features = OpenGL Mathematics (GLM).</element> + <element>A C++ mathematics library for 3D graphics.</element> + </about-short> <goodies> <goodie date="16/10/2008" title="GLM Logo" image="goodies/logo.png" image-mini="image/logo-mini.png"> @@ -2832,29 +2852,25 @@ <menu> <menu-group name="Main"> - <menu-entry name="News" href="./index.html" /> - <menu-entry name="About" href="./about.html" /> + <menu-entry name="Front page" href="./index.html" /> <menu-entry name="Downloads" href="./download.html" /> - <menu-entry name="Goodies" href="./goodies.html" /> <menu-entry name="OpenGL SDK page" href="http://www.opengl.org/sdk/libs/GLM/" /> </menu-group> <menu-group name="Documentation"> <menu-entry name="GLM Manual" href="./glm-0.9.1.pdf" /> - <menu-entry name="GLM API" href="./html-0.9.1/index.html" /> + <menu-entry name="GLM API" href="./api-0.9.1/index.html" /> <menu-entry name="Code samples" href="./code.html" /> <menu-entry name="GLSL Specification" href="http://www.opengl.org/registry/doc/GLSLangSpec.4.10.6.clean.pdf" /> <menu-entry name="OpenGL.org Toolkits forum" href="http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=postlist&Board=10&page=1" /> - <!--menu-entry name="Usage" href="./usage.html" /--> </menu-group> <menu-group name="Developer"> - <!--menu-entry name="Contribute" href="./contribute.html" /--> - <menu-entry name="Bug report" href="https://sourceforge.net/apps/trac/ogl-math" /> + <menu-entry name="Report a bug" href="https://sourceforge.net/apps/trac/ogl-math/newticket" /> <menu-entry name="SourceForge page" href="https://sourceforge.net/projects/ogl-math/" /> <menu-entry name="G-Truc Creation page" href="http://www.g-truc.net/project-0016.html#menu" /> <menu-entry name="Browse Git repository" href="http://ogl-math.git.sourceforge.net/git/gitweb.cgi?p=ogl-math/ogl-math;a=summary" /> - <menu-entry name="GIT HEAD snapshot" href="http://ogl-math.git.sourceforge.net/git/gitweb.cgi?p=ogl-math/ogl-math;a=snapshot;h=HEAD;sf=tgz" /> + <menu-entry name="Source snapshot" href="http://ogl-math.git.sourceforge.net/git/gitweb.cgi?p=ogl-math/ogl-math;a=snapshot;h=HEAD;sf=tgz" /> </menu-group> <menu-link> diff --git a/doc/src/download.xsl b/doc/src/download.xsl index 705e6f52..8ad4e6c2 100644 --- a/doc/src/download.xsl +++ b/doc/src/download.xsl @@ -7,7 +7,7 @@ <xsl:template match="/"> <html> <head> - <title>OpenGL Mathematics : Downloads</title> + <title>OpenGL Mathematics: Downloads</title> <meta http-equiv="Content-Language" content="en" /> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=iso-8859-1" /> <meta name="copyright" content="G-Truc Creation" /> diff --git a/doc/src/link.xsl b/doc/src/link.xsl index a100016f..aa192d35 100644 --- a/doc/src/link.xsl +++ b/doc/src/link.xsl @@ -7,7 +7,7 @@ <xsl:template match="/"> <html> <head> - <title>OpenGL Mathematics : Links</title> + <title>OpenGL Mathematics: Links</title> <meta http-equiv="Content-Language" content="fr, be, ca, lu, ch" /> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=iso-8859-1" /> <meta name="copyright" content="� 2005 C-Truc Creation" /> diff --git a/doc/src/news.xsl b/doc/src/news.xsl index 271da37d..59c736f6 100644 --- a/doc/src/news.xsl +++ b/doc/src/news.xsl @@ -7,7 +7,7 @@ <xsl:template match="/"> <html> <head> - <title>OpenGL Mathematics: News</title> + <title>OpenGL Mathematics</title> <meta http-equiv="Content-Language" content="en" /> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=iso-8859-1" /> <meta name="copyright" content="G-Truc Creation" /> @@ -38,6 +38,8 @@ <img src="./common/title.png" alt="OpenGL Mathematics" /> </div> <xsl:apply-templates select="./glm/about-short" /> + <br /> + <xsl:apply-templates select="./glm/about-long" /> <br /> <xsl:apply-templates select="./glm/page_news/news" /> <div class="title3"> @@ -53,29 +55,17 @@ <xsl:template match="news"> <div> - <div class="title-date"> - <xsl:value-of select="./@date" /> - </div> <h3> + <xsl:value-of select="./@date" /><xsl:text> - </xsl:text> <xsl:value-of select="./@title" /> </h3> - <div> - <xsl:if test="./paragraph"> - <xsl:apply-templates select="./paragraph" /> - </xsl:if> - <xsl:if test="./list"> - <xsl:apply-templates select="./list" /> - </xsl:if> - <xsl:if test="./code"> - <xsl:apply-templates select="./code" /> - </xsl:if> - <xsl:apply-templates select="./source" /> - - <!--xsl:apply-templates select="/" /--> - - </div> - <div class="news-separator">_________________</div> - <br /> + <div> + <xsl:apply-templates select="./paragraph" /> + <xsl:apply-templates select="./list" /> + <xsl:apply-templates select="./code" /> + <xsl:apply-templates select="./source" /> + </div> + <br /> </div> </xsl:template> diff --git a/doc/src/util.xsl b/doc/src/util.xsl index 0d9be52a..d33980f8 100644 --- a/doc/src/util.xsl +++ b/doc/src/util.xsl @@ -52,9 +52,42 @@ </xsl:template> <xsl:template match="list"> - <xsl:value-of select="./@nom" /><br /> - <xsl:apply-templates select="./element"/> - <br /> + <div xmlns="http://www.w3.org/1999/xhtml"> + <xsl:if test="./@name"> + <xsl:choose> + <xsl:when test="./@href"> + <span class="list"> + <a href="{./@href}"> + <xsl:value-of select="./@name" /> + </a> + </span> + </xsl:when> + <xsl:otherwise> + <span class="list"> + <xsl:value-of select="./@name" /> + </span> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + <ul> + <xsl:apply-templates select="./list-element"/> + </ul> + </div> + </xsl:template> + + <xsl:template match="list-element"> + <li xmlns="http://www.w3.org/1999/xhtml"> + <xsl:choose> + <xsl:when test="./@href"> + <a href="{./@href}"> + <xsl:apply-templates /> + </a> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates /> + </xsl:otherwise> + </xsl:choose> + </li> </xsl:template> <xsl:template match="element"> @@ -62,7 +95,7 @@ </xsl:template> <xsl:template match="paragraph"> - <div class="paragraph"><xsl:text /><xsl:apply-templates /><xsl:text /></div><br /> + <p><xsl:text /><xsl:apply-templates /><xsl:text /></p> </xsl:template> <xsl:template match="about-short">