Revision: 76234
http://sourceforge.net/p/brlcad/code/76234
Author: starseeker
Date: 2020-06-29 13:53:57 +0000 (Mon, 29 Jun 2020)
Log Message:
-----------
Add work by Sadeep Darshana on enabling a display manager in the Qt based qged
interface
Modified Paths:
--------------
brlcad/trunk/src/qged/CMakeLists.txt
brlcad/trunk/src/qged/cadapp.cpp
brlcad/trunk/src/qged/main_window.cpp
brlcad/trunk/src/qged/main_window.h
Added Paths:
-----------
brlcad/trunk/src/qged/display/
brlcad/trunk/src/qged/display/AxesRenderer.cpp
brlcad/trunk/src/qged/display/AxesRenderer.h
brlcad/trunk/src/qged/display/Camera.h
brlcad/trunk/src/qged/display/Display.cpp
brlcad/trunk/src/qged/display/Display.h
brlcad/trunk/src/qged/display/DisplayManager.cpp
brlcad/trunk/src/qged/display/DisplayManager.h
brlcad/trunk/src/qged/display/GeometryRenderer.cpp
brlcad/trunk/src/qged/display/GeometryRenderer.h
brlcad/trunk/src/qged/display/OrthographicCamera.cpp
brlcad/trunk/src/qged/display/OrthographicCamera.h
brlcad/trunk/src/qged/display/README.txt
brlcad/trunk/src/qged/display/Renderable.h
brlcad/trunk/src/qged/display/glm/
brlcad/trunk/src/qged/display/glm/CMakeLists.txt
brlcad/trunk/src/qged/display/glm/cmake/
brlcad/trunk/src/qged/display/glm/cmake/glm/
brlcad/trunk/src/qged/display/glm/cmake/glm/glmConfig-version.cmake
brlcad/trunk/src/qged/display/glm/cmake/glm/glmConfig.cmake
brlcad/trunk/src/qged/display/glm/copying.txt
brlcad/trunk/src/qged/display/glm/glm/
brlcad/trunk/src/qged/display/glm/glm/CMakeLists.txt
brlcad/trunk/src/qged/display/glm/glm/common.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/
brlcad/trunk/src/qged/display/glm/glm/detail/_features.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/_fixes.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/_noise.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/_swizzle.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/_swizzle_func.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/_vectorize.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/compute_common.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/compute_vector_relational.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/func_common.inl
brlcad/trunk/src/qged/display/glm/glm/detail/func_common_simd.inl
brlcad/trunk/src/qged/display/glm/glm/detail/func_exponential.inl
brlcad/trunk/src/qged/display/glm/glm/detail/func_exponential_simd.inl
brlcad/trunk/src/qged/display/glm/glm/detail/func_geometric.inl
brlcad/trunk/src/qged/display/glm/glm/detail/func_geometric_simd.inl
brlcad/trunk/src/qged/display/glm/glm/detail/func_integer.inl
brlcad/trunk/src/qged/display/glm/glm/detail/func_integer_simd.inl
brlcad/trunk/src/qged/display/glm/glm/detail/func_matrix.inl
brlcad/trunk/src/qged/display/glm/glm/detail/func_matrix_simd.inl
brlcad/trunk/src/qged/display/glm/glm/detail/func_packing.inl
brlcad/trunk/src/qged/display/glm/glm/detail/func_packing_simd.inl
brlcad/trunk/src/qged/display/glm/glm/detail/func_trigonometric.inl
brlcad/trunk/src/qged/display/glm/glm/detail/func_trigonometric_simd.inl
brlcad/trunk/src/qged/display/glm/glm/detail/func_vector_relational.inl
brlcad/trunk/src/qged/display/glm/glm/detail/func_vector_relational_simd.inl
brlcad/trunk/src/qged/display/glm/glm/detail/glm.cpp
brlcad/trunk/src/qged/display/glm/glm/detail/qualifier.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/setup.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/type_float.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/type_half.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/type_half.inl
brlcad/trunk/src/qged/display/glm/glm/detail/type_mat2x2.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/type_mat2x2.inl
brlcad/trunk/src/qged/display/glm/glm/detail/type_mat2x3.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/type_mat2x3.inl
brlcad/trunk/src/qged/display/glm/glm/detail/type_mat2x4.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/type_mat2x4.inl
brlcad/trunk/src/qged/display/glm/glm/detail/type_mat3x2.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/type_mat3x2.inl
brlcad/trunk/src/qged/display/glm/glm/detail/type_mat3x3.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/type_mat3x3.inl
brlcad/trunk/src/qged/display/glm/glm/detail/type_mat3x4.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/type_mat3x4.inl
brlcad/trunk/src/qged/display/glm/glm/detail/type_mat4x2.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/type_mat4x2.inl
brlcad/trunk/src/qged/display/glm/glm/detail/type_mat4x3.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/type_mat4x3.inl
brlcad/trunk/src/qged/display/glm/glm/detail/type_mat4x4.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/type_mat4x4.inl
brlcad/trunk/src/qged/display/glm/glm/detail/type_mat4x4_simd.inl
brlcad/trunk/src/qged/display/glm/glm/detail/type_quat.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/type_quat.inl
brlcad/trunk/src/qged/display/glm/glm/detail/type_quat_simd.inl
brlcad/trunk/src/qged/display/glm/glm/detail/type_vec1.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/type_vec1.inl
brlcad/trunk/src/qged/display/glm/glm/detail/type_vec2.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/type_vec2.inl
brlcad/trunk/src/qged/display/glm/glm/detail/type_vec3.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/type_vec3.inl
brlcad/trunk/src/qged/display/glm/glm/detail/type_vec4.hpp
brlcad/trunk/src/qged/display/glm/glm/detail/type_vec4.inl
brlcad/trunk/src/qged/display/glm/glm/detail/type_vec4_simd.inl
brlcad/trunk/src/qged/display/glm/glm/exponential.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_clip_space.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_clip_space.inl
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_common.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_common.inl
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_double2x2.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_double2x2_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_double2x3.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_double2x3_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_double2x4.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_double2x4_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_double3x2.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_double3x2_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_double3x3.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_double3x3_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_double3x4.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_double3x4_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_double4x2.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_double4x2_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_double4x3.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_double4x3_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_double4x4.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_double4x4_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_float2x2.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_float2x2_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_float2x3.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_float2x3_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_float2x4.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_float2x4_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_float3x2.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_float3x2_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_float3x3.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_float3x3_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_float3x4.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_float3x4_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_float4x2.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_float4x2_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_float4x3.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_float4x3_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_float4x4.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_float4x4_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_int2x2.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_int2x2_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_int2x3.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_int2x3_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_int2x4.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_int2x4_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_int3x2.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_int3x2_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_int3x3.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_int3x3_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_int3x4.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_int3x4_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_int4x2.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_int4x2_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_int4x3.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_int4x3_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_int4x4.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_int4x4_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_projection.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_projection.inl
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_relational.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_relational.inl
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_transform.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_transform.inl
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_uint2x2.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_uint2x2_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_uint2x3.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_uint2x3_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_uint2x4.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_uint2x4_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_uint3x2.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_uint3x2_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_uint3x3.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_uint3x3_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_uint3x4.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_uint3x4_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_uint4x2.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_uint4x2_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_uint4x3.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_uint4x3_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_uint4x4.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/matrix_uint4x4_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/quaternion_common.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/quaternion_common.inl
brlcad/trunk/src/qged/display/glm/glm/ext/quaternion_common_simd.inl
brlcad/trunk/src/qged/display/glm/glm/ext/quaternion_double.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/quaternion_double_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/quaternion_exponential.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/quaternion_exponential.inl
brlcad/trunk/src/qged/display/glm/glm/ext/quaternion_float.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/quaternion_float_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/quaternion_geometric.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/quaternion_geometric.inl
brlcad/trunk/src/qged/display/glm/glm/ext/quaternion_relational.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/quaternion_relational.inl
brlcad/trunk/src/qged/display/glm/glm/ext/quaternion_transform.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/quaternion_transform.inl
brlcad/trunk/src/qged/display/glm/glm/ext/quaternion_trigonometric.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/quaternion_trigonometric.inl
brlcad/trunk/src/qged/display/glm/glm/ext/scalar_common.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/scalar_common.inl
brlcad/trunk/src/qged/display/glm/glm/ext/scalar_constants.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/scalar_constants.inl
brlcad/trunk/src/qged/display/glm/glm/ext/scalar_int_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/scalar_integer.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/scalar_integer.inl
brlcad/trunk/src/qged/display/glm/glm/ext/scalar_packing.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/scalar_packing.inl
brlcad/trunk/src/qged/display/glm/glm/ext/scalar_relational.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/scalar_relational.inl
brlcad/trunk/src/qged/display/glm/glm/ext/scalar_uint_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/scalar_ulp.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/scalar_ulp.inl
brlcad/trunk/src/qged/display/glm/glm/ext/vector_bool1.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_bool1_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_bool2.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_bool2_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_bool3.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_bool3_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_bool4.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_bool4_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_common.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_common.inl
brlcad/trunk/src/qged/display/glm/glm/ext/vector_double1.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_double1_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_double2.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_double2_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_double3.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_double3_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_double4.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_double4_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_float1.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_float1_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_float2.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_float2_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_float3.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_float3_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_float4.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_float4_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_int1.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_int1_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_int2.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_int2_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_int3.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_int3_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_int4.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_int4_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_integer.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_integer.inl
brlcad/trunk/src/qged/display/glm/glm/ext/vector_packing.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_packing.inl
brlcad/trunk/src/qged/display/glm/glm/ext/vector_relational.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_relational.inl
brlcad/trunk/src/qged/display/glm/glm/ext/vector_uint1.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_uint1_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_uint2.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_uint2_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_uint3.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_uint3_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_uint4.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_uint4_sized.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_ulp.hpp
brlcad/trunk/src/qged/display/glm/glm/ext/vector_ulp.inl
brlcad/trunk/src/qged/display/glm/glm/ext.hpp
brlcad/trunk/src/qged/display/glm/glm/fwd.hpp
brlcad/trunk/src/qged/display/glm/glm/geometric.hpp
brlcad/trunk/src/qged/display/glm/glm/glm.hpp
brlcad/trunk/src/qged/display/glm/glm/gtc/
brlcad/trunk/src/qged/display/glm/glm/gtc/bitfield.hpp
brlcad/trunk/src/qged/display/glm/glm/gtc/bitfield.inl
brlcad/trunk/src/qged/display/glm/glm/gtc/color_space.hpp
brlcad/trunk/src/qged/display/glm/glm/gtc/color_space.inl
brlcad/trunk/src/qged/display/glm/glm/gtc/constants.hpp
brlcad/trunk/src/qged/display/glm/glm/gtc/constants.inl
brlcad/trunk/src/qged/display/glm/glm/gtc/epsilon.hpp
brlcad/trunk/src/qged/display/glm/glm/gtc/epsilon.inl
brlcad/trunk/src/qged/display/glm/glm/gtc/integer.hpp
brlcad/trunk/src/qged/display/glm/glm/gtc/integer.inl
brlcad/trunk/src/qged/display/glm/glm/gtc/matrix_access.hpp
brlcad/trunk/src/qged/display/glm/glm/gtc/matrix_access.inl
brlcad/trunk/src/qged/display/glm/glm/gtc/matrix_integer.hpp
brlcad/trunk/src/qged/display/glm/glm/gtc/matrix_inverse.hpp
brlcad/trunk/src/qged/display/glm/glm/gtc/matrix_inverse.inl
brlcad/trunk/src/qged/display/glm/glm/gtc/matrix_transform.hpp
brlcad/trunk/src/qged/display/glm/glm/gtc/matrix_transform.inl
brlcad/trunk/src/qged/display/glm/glm/gtc/noise.hpp
brlcad/trunk/src/qged/display/glm/glm/gtc/noise.inl
brlcad/trunk/src/qged/display/glm/glm/gtc/packing.hpp
brlcad/trunk/src/qged/display/glm/glm/gtc/packing.inl
brlcad/trunk/src/qged/display/glm/glm/gtc/quaternion.hpp
brlcad/trunk/src/qged/display/glm/glm/gtc/quaternion.inl
brlcad/trunk/src/qged/display/glm/glm/gtc/quaternion_simd.inl
brlcad/trunk/src/qged/display/glm/glm/gtc/random.hpp
brlcad/trunk/src/qged/display/glm/glm/gtc/random.inl
brlcad/trunk/src/qged/display/glm/glm/gtc/reciprocal.hpp
brlcad/trunk/src/qged/display/glm/glm/gtc/reciprocal.inl
brlcad/trunk/src/qged/display/glm/glm/gtc/round.hpp
brlcad/trunk/src/qged/display/glm/glm/gtc/round.inl
brlcad/trunk/src/qged/display/glm/glm/gtc/type_aligned.hpp
brlcad/trunk/src/qged/display/glm/glm/gtc/type_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/gtc/type_precision.inl
brlcad/trunk/src/qged/display/glm/glm/gtc/type_ptr.hpp
brlcad/trunk/src/qged/display/glm/glm/gtc/type_ptr.inl
brlcad/trunk/src/qged/display/glm/glm/gtc/ulp.hpp
brlcad/trunk/src/qged/display/glm/glm/gtc/ulp.inl
brlcad/trunk/src/qged/display/glm/glm/gtc/vec1.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/
brlcad/trunk/src/qged/display/glm/glm/gtx/associated_min_max.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/associated_min_max.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/bit.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/bit.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/closest_point.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/closest_point.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/color_encoding.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/color_encoding.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/color_space.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/color_space.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/color_space_YCoCg.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/color_space_YCoCg.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/common.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/common.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/compatibility.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/compatibility.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/component_wise.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/component_wise.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/dual_quaternion.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/dual_quaternion.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/easing.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/easing.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/euler_angles.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/euler_angles.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/extend.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/extend.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/extended_min_max.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/extended_min_max.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/exterior_product.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/exterior_product.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/fast_exponential.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/fast_exponential.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/fast_square_root.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/fast_square_root.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/fast_trigonometry.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/fast_trigonometry.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/float_notmalize.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/functions.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/functions.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/gradient_paint.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/gradient_paint.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/handed_coordinate_space.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/handed_coordinate_space.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/hash.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/hash.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/integer.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/integer.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/intersect.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/intersect.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/io.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/io.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/log_base.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/log_base.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/matrix_cross_product.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/matrix_cross_product.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/matrix_decompose.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/matrix_decompose.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/matrix_factorisation.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/matrix_factorisation.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/matrix_interpolation.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/matrix_interpolation.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/matrix_major_storage.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/matrix_major_storage.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/matrix_operation.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/matrix_operation.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/matrix_query.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/matrix_query.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/matrix_transform_2d.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/matrix_transform_2d.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/mixed_product.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/mixed_product.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/norm.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/norm.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/normal.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/normal.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/normalize_dot.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/normalize_dot.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/number_precision.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/number_precision.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/optimum_pow.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/optimum_pow.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/orthonormalize.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/orthonormalize.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/perpendicular.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/perpendicular.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/polar_coordinates.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/polar_coordinates.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/projection.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/projection.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/quaternion.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/quaternion.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/range.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/raw_data.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/raw_data.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/rotate_normalized_axis.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/rotate_normalized_axis.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/rotate_vector.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/rotate_vector.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/scalar_multiplication.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/scalar_relational.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/scalar_relational.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/spline.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/spline.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/std_based_type.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/std_based_type.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/string_cast.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/string_cast.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/texture.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/texture.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/transform.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/transform.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/transform2.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/transform2.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/type_aligned.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/type_aligned.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/type_trait.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/type_trait.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/vec_swizzle.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/vector_angle.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/vector_angle.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/vector_query.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/vector_query.inl
brlcad/trunk/src/qged/display/glm/glm/gtx/wrap.hpp
brlcad/trunk/src/qged/display/glm/glm/gtx/wrap.inl
brlcad/trunk/src/qged/display/glm/glm/integer.hpp
brlcad/trunk/src/qged/display/glm/glm/mat2x2.hpp
brlcad/trunk/src/qged/display/glm/glm/mat2x3.hpp
brlcad/trunk/src/qged/display/glm/glm/mat2x4.hpp
brlcad/trunk/src/qged/display/glm/glm/mat3x2.hpp
brlcad/trunk/src/qged/display/glm/glm/mat3x3.hpp
brlcad/trunk/src/qged/display/glm/glm/mat3x4.hpp
brlcad/trunk/src/qged/display/glm/glm/mat4x2.hpp
brlcad/trunk/src/qged/display/glm/glm/mat4x3.hpp
brlcad/trunk/src/qged/display/glm/glm/mat4x4.hpp
brlcad/trunk/src/qged/display/glm/glm/matrix.hpp
brlcad/trunk/src/qged/display/glm/glm/packing.hpp
brlcad/trunk/src/qged/display/glm/glm/simd/
brlcad/trunk/src/qged/display/glm/glm/simd/common.h
brlcad/trunk/src/qged/display/glm/glm/simd/exponential.h
brlcad/trunk/src/qged/display/glm/glm/simd/geometric.h
brlcad/trunk/src/qged/display/glm/glm/simd/integer.h
brlcad/trunk/src/qged/display/glm/glm/simd/matrix.h
brlcad/trunk/src/qged/display/glm/glm/simd/neon.h
brlcad/trunk/src/qged/display/glm/glm/simd/packing.h
brlcad/trunk/src/qged/display/glm/glm/simd/platform.h
brlcad/trunk/src/qged/display/glm/glm/simd/trigonometric.h
brlcad/trunk/src/qged/display/glm/glm/simd/vector_relational.h
brlcad/trunk/src/qged/display/glm/glm/trigonometric.hpp
brlcad/trunk/src/qged/display/glm/glm/vec2.hpp
brlcad/trunk/src/qged/display/glm/glm/vec3.hpp
brlcad/trunk/src/qged/display/glm/glm/vec4.hpp
brlcad/trunk/src/qged/display/glm/glm/vector_relational.hpp
brlcad/trunk/src/qged/display/glm/manual.md
brlcad/trunk/src/qged/display/glm/readme.md
Modified: brlcad/trunk/src/qged/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/qged/CMakeLists.txt 2020-06-27 15:12:31 UTC (rev
76233)
+++ brlcad/trunk/src/qged/CMakeLists.txt 2020-06-29 13:53:57 UTC (rev
76234)
@@ -19,6 +19,11 @@
# because most of BRL-CAD's targets are not Qt targets. We don't
# want to run the automatic moc logic for all of them.
+
+include_directories(
+ "display"
+ "display/glm/")
+
set(qged_srcs
main.cpp
main_window.cpp
@@ -39,6 +44,13 @@
QAccordionWidget.cpp
QToolPalette.cpp
QFlowLayout.cpp
+ display/OrthographicCamera.cpp
+ display/Display.cpp
+ display/DisplayManager.cpp
+ display/GeometryRenderer.cpp
+ display/GeometryRenderer.h
+ display/AxesRenderer.cpp
+ display/AxesRenderer.h
)
set(moc_headers
@@ -59,6 +71,10 @@
QAccordionWidget.h
QToolPalette.h
QFlowLayout.h
+ display/Camera.h
+ display/OrthographicCamera.h
+ display/Display.h
+ display/DisplayManager.h
)
if(BRLCAD_ENABLE_QT)
Modified: brlcad/trunk/src/qged/cadapp.cpp
===================================================================
--- brlcad/trunk/src/qged/cadapp.cpp 2020-06-27 15:12:31 UTC (rev 76233)
+++ brlcad/trunk/src/qged/cadapp.cpp 2020-06-29 13:53:57 UTC (rev 76234)
@@ -39,6 +39,7 @@
ged_pointer = GED_NULL;
current_idx = QModelIndex();
interaction_mode = 0;
+ BU_LIST_INIT(&RTG.rtg_vlfree);
}
struct db_i *
Added: brlcad/trunk/src/qged/display/AxesRenderer.cpp
===================================================================
--- brlcad/trunk/src/qged/display/AxesRenderer.cpp
(rev 0)
+++ brlcad/trunk/src/qged/display/AxesRenderer.cpp 2020-06-29 13:53:57 UTC
(rev 76234)
@@ -0,0 +1,52 @@
+/* A X E S R E N D E R E R . C P P
+ * BRL-CAD
+ *
+ * Copyright (c) 2020 United States Government as represented by
+ * the U.S. Army Research Laboratory.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this file; see the file named COPYING for more
+ * information.
+ */
+/** @file AxesRenderer.cpp */
+//
+// Created by Sadeep on 28-Jun.
+//
+
+#include "common.h"
+
+#if defined(WIN32) && !defined(__CYGWIN__)
+#include<windows.h>
+#endif
+
+#ifdef HAVE_GL_GL_H
+# include <GL/gl.h>
+#endif
+#include "AxesRenderer.h"
+
+#define GRID_LINE_LENGTH 100000
+
+void AxesRenderer::render() {
+ glBegin(GL_LINES);
+ glColor3f(0,1,0);
+ glVertex3f(0, GRID_LINE_LENGTH, 0);
+ glVertex3f(0, -0, 0);
+
+ glColor3f(0,0,1);
+ glVertex3f(0, 0, GRID_LINE_LENGTH);
+ glVertex3f(0, 0, -0);
+
+ glColor3f(1,0,0);
+ glVertex3f( GRID_LINE_LENGTH, 0,0);
+ glVertex3f( -0, 0,0);
+ glEnd();
+}
Property changes on: brlcad/trunk/src/qged/display/AxesRenderer.cpp
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: brlcad/trunk/src/qged/display/AxesRenderer.h
===================================================================
--- brlcad/trunk/src/qged/display/AxesRenderer.h
(rev 0)
+++ brlcad/trunk/src/qged/display/AxesRenderer.h 2020-06-29 13:53:57 UTC
(rev 76234)
@@ -0,0 +1,36 @@
+/* A X E S R E N D E R E R . H
+ * BRL-CAD
+ *
+ * Copyright (c) 2020 United States Government as represented by
+ * the U.S. Army Research Laboratory.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this file; see the file named COPYING for more
+ * information.
+ */
+/** @file AxesRenderer.h */
+//
+// Created by Sadeep on 28-Jun.
+//
+
+#ifndef BRLCAD_AXESRENDERER_H
+#define BRLCAD_AXESRENDERER_H
+
+
+#include "Renderable.h"
+
+class AxesRenderer: public Renderable {
+ void render() override;
+};
+
+
+#endif //BRLCAD_AXESRENDERER_H
Property changes on: brlcad/trunk/src/qged/display/AxesRenderer.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: brlcad/trunk/src/qged/display/Camera.h
===================================================================
--- brlcad/trunk/src/qged/display/Camera.h (rev 0)
+++ brlcad/trunk/src/qged/display/Camera.h 2020-06-29 13:53:57 UTC (rev
76234)
@@ -0,0 +1,49 @@
+/* C A M E R A . H
+ * BRL-CAD
+ *
+ * Copyright (c) 2020 United States Government as represented by
+ * the U.S. Army Research Laboratory.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this file; see the file named COPYING for more
+ * information.
+ */
+/** @file Camera.h */
+//
+// Created by Sadeep on 09-Jun.
+//
+
+#ifndef RT3_CAMERABK_H
+#define RT3_CAMERABK_H
+
+
+#include <glm/detail/type_mat4x4.hpp>
+
+
+class Camera {
+public:
+ glm::vec3 axisX = glm::vec3(1.0f,0.0f,0.0f);
+ glm::vec3 axisY = glm::vec3(0.0f,1.0f,0.0f);
+ glm::vec3 axisZ = glm::vec3(0.0f,0.0f,1.0f);
+
+ virtual void setWH(float w, float h) = 0;
+ virtual void processMoveRequest(const int &deltaX, const int &deltaY) = 0;
+ virtual void processRotateRequest(const int & deltaX, const int & deltaY,
const bool& thirdAxis) = 0;
+ virtual void processZoomRequest(const int & deltaWheelAngle) = 0;
+
+ virtual glm::mat4 modelViewMatrix() const = 0;
+ virtual glm::mat4 projectionMatrix() const = 0;
+
+};
+
+
+#endif //RT3_CAMERABK_H
Property changes on: brlcad/trunk/src/qged/display/Camera.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: brlcad/trunk/src/qged/display/Display.cpp
===================================================================
--- brlcad/trunk/src/qged/display/Display.cpp (rev 0)
+++ brlcad/trunk/src/qged/display/Display.cpp 2020-06-29 13:53:57 UTC (rev
76234)
@@ -0,0 +1,207 @@
+/* D I S P L A Y . C P P
+ * BRL-CAD
+ *
+ * Copyright (c) 2020 United States Government as represented by
+ * the U.S. Army Research Laboratory.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this file; see the file named COPYING for more
+ * information.
+ */
+/** @file Display.cpp */
+//
+// Created by Sadeep on 07-Jun.
+//
+
+#include "Display.h"
+#include <glm/gtc/type_ptr.hpp>
+#include <QtWidgets/QApplication>
+#include <OrthographicCamera.h>
+#include "DisplayManager.h"
+#include "GeometryRenderer.h"
+#include "cadapp.h"
+
+#if defined(__GNUC__) && !defined(__clang__)
+# pragma GCC diagnostic push
+#endif
+#if defined(__clang__)
+# pragma clang diagnostic push
+#endif
+#if defined(__GNUC__) && !defined(__clang__)
+# pragma GCC diagnostic ignored "-Wshadow"
+#endif
+#if defined(__clang__)
+# pragma clang diagnostic ignored "-Wshadow"
+#endif
+
+
+using namespace std;
+
+
+Display::Display(rt_wdb *database) {
+ this->database = database;
+ camera = new OrthographicCamera();
+ displayManager = new DisplayManager(this);
+ geometryRenderer = new GeometryRenderer(database,displayManager);
+ axesRenderer = new AxesRenderer();
+
+ renderers.push_back(geometryRenderer);
+ renderers.push_back(axesRenderer);
+}
+
+
+void Display::resizeGL(int w, int h) {
+ camera->setWH(w,h);
+ this->w = w;
+ this->h = h;
+}
+
+void Display::paintGL() {
+ displayManager->drawBegin();
+
+ displayManager->loadMatrix((const
float*)glm::value_ptr(camera->modelViewMatrix()));
+ displayManager->loadPMatrix((const
float*)glm::value_ptr(camera->projectionMatrix()));
+
+ for (auto i:renderers) i->render();
+}
+
+void Display::refresh() {
+ makeCurrent();
+ update();
+}
+
+
+void Display::mouseMoveEvent(QMouseEvent *event) {
+ int x = event->x();
+ int y = event->y();
+ int globalX = event->globalX();
+ int globalY = event->globalY();
+
+ bool resetX = false, resetY = false;
+
+ if(prevMouseX != -1 && prevMouseY != -1 && (event->buttons() &
(rotateCameraMouseButton|moveCameraMouseButton))) {
+ if (skipNextMouseMoveEvent) {
+ skipNextMouseMoveEvent = false;
+ return;
+ }
+ if(event->buttons() & (rotateCameraMouseButton)) {
+ bool rotateThirdAxis =
QApplication::keyboardModifiers().testFlag(rotateAroundThirdAxisModifier);
+ camera->processRotateRequest(x- prevMouseX, y -
prevMouseY,rotateThirdAxis);
+ }
+ if(event->buttons() & (moveCameraMouseButton)){
+ camera->processMoveRequest(x- prevMouseX, y - prevMouseY);
+ }
+
+ refresh();
+
+ auto topLeft = mapToGlobal(QPoint(0,0));
+ auto bottomRight = mapToGlobal(QPoint(size().width(),size().height()));
+
+ int newX = -1;
+ int newY = -1;
+
+ if (globalX <= topLeft.x()) {
+ newX = bottomRight.x()-1;
+ resetX = true;
+ }
+ if (globalX >= bottomRight.x()) {
+ newX = topLeft.x()+1;
+ resetX = true;
+ }
+ if (globalY <= topLeft.y()) {
+ newY = bottomRight.y()-1;
+ resetY = true;
+ }
+ if (globalY >= bottomRight.y()) {
+ newY = topLeft.y()+1;
+ resetY = true;
+ }
+
+ if (resetX || resetY) {
+ prevMouseX = resetX ? mapFromGlobal(QPoint(newX,newY)).x() : x;
+ prevMouseY = resetY ? mapFromGlobal(QPoint(newX,newY)).y() : y;
+ QCursor::setPos(resetX ? newX : globalX, resetY ? newY : globalY);
+ skipNextMouseMoveEvent = true;
+ }
+ }
+
+ if(!resetX && !resetY) {
+ prevMouseX = x;
+ prevMouseY = y;
+ }
+}
+
+void Display::mousePressEvent(QMouseEvent *event) {
+ prevMouseX = event->x();
+ prevMouseY = event->y();
+}
+
+void Display::mouseReleaseEvent(QMouseEvent *UNUSED(event)) {
+ prevMouseX = -1;
+ prevMouseY = -1;
+}
+
+void Display::wheelEvent(QWheelEvent *event) {
+
+ if (event->phase() == Qt::NoScrollPhase || event->phase() ==
Qt::ScrollUpdate || event->phase() == Qt::ScrollMomentum) {
+ camera->processZoomRequest(event->angleDelta().y() / 8);
+ refresh();
+ }
+}
+
+void Display::keyPressEvent( QKeyEvent *k ) {
+ switch (k->key()) {
+ case Qt::Key_Up:
+ camera->processMoveRequest(0, keyPressSimulatedMouseMoveDistance);
+ refresh();
+ break;
+ case Qt::Key_Down:
+ camera->processMoveRequest(0, -keyPressSimulatedMouseMoveDistance);
+ refresh();
+ break;
+ case Qt::Key_Left:
+ camera->processMoveRequest(keyPressSimulatedMouseMoveDistance, 0);
+ refresh();
+ break;
+ case Qt::Key_Right:
+ camera->processMoveRequest(-keyPressSimulatedMouseMoveDistance, 0);
+ refresh();
+ break;
+ }
+}
+
+void Display::onDatabaseUpdated() {
+ geometryRenderer->onDatabaseUpdated();
+}
+
+int Display::getW() const {
+ return w;
+}
+
+int Display::getH() const {
+ return h;
+}
+
+void Display::onDatabaseOpen() {
+ makeCurrent();
+ geometryRenderer->setDatabase(((CADApp *)qApp)->wdbp());
+ onDatabaseUpdated();
+ update();
+}
+
+#if defined(__GNUC__) && !defined(__clang__)
+# pragma GCC diagnostic pop
+#endif
+#if defined(__clang__)
+# pragma clang diagnostic pop
+#endif
+
Property changes on: brlcad/trunk/src/qged/display/Display.cpp
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: brlcad/trunk/src/qged/display/Display.h
===================================================================
--- brlcad/trunk/src/qged/display/Display.h (rev 0)
+++ brlcad/trunk/src/qged/display/Display.h 2020-06-29 13:53:57 UTC (rev
76234)
@@ -0,0 +1,85 @@
+/* D I S P L A Y . H
+ * BRL-CAD
+ *
+ * Copyright (c) 2020 United States Government as represented by
+ * the U.S. Army Research Laboratory.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this file; see the file named COPYING for more
+ * information.
+ */
+/** @file Display.h */
+//
+// Created by Sadeep on 07-Jun.
+//
+
+#ifndef RT3_DISPLAY_H
+#define RT3_DISPLAY_H
+
+#include <QtWidgets/QOpenGLWidget>
+#include "Camera.h"
+#include "AxesRenderer.h"
+#include <QMouseEvent>
+#include <rt/db_instance.h>
+
+class DisplayManager;
+class GeometryRenderer;
+
+
+class Display : public QOpenGLWidget{
+
+Q_OBJECT
+public:
+ Display(rt_wdb *_database);
+
+ Camera *camera;
+ void onDatabaseUpdated();
+ void refresh();
+
+ int getW() const;
+ int getH() const;
+
+protected:
+ void resizeGL(int w, int h) override;
+ void paintGL() override;
+
+ void mousePressEvent(QMouseEvent *event) override;
+ void mouseReleaseEvent(QMouseEvent *event) override;
+ void mouseMoveEvent(QMouseEvent *event) override;
+ void wheelEvent(QWheelEvent *event) override;
+ void keyPressEvent(QKeyEvent *k) override ;
+
+private:
+ int w = 400;
+ int h = 400;
+ int prevMouseX = -1;
+ int prevMouseY = -1;
+ bool skipNextMouseMoveEvent = false;
+ float keyPressSimulatedMouseMoveDistance = 8;
+
+ Qt::MouseButton rotateCameraMouseButton = Qt::LeftButton;
+ Qt::MouseButton moveCameraMouseButton = Qt::RightButton;
+ Qt::KeyboardModifier rotateAroundThirdAxisModifier = Qt::ShiftModifier;
+
+
+ DisplayManager *displayManager;
+ rt_wdb *database;
+ GeometryRenderer * geometryRenderer;
+ AxesRenderer * axesRenderer;
+ std::vector<Renderable*> renderers;
+
+public slots:
+ void onDatabaseOpen();
+};
+
+
+#endif //RT3_DISPLAY_H
Property changes on: brlcad/trunk/src/qged/display/Display.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: brlcad/trunk/src/qged/display/DisplayManager.cpp
===================================================================
--- brlcad/trunk/src/qged/display/DisplayManager.cpp
(rev 0)
+++ brlcad/trunk/src/qged/display/DisplayManager.cpp 2020-06-29 13:53:57 UTC
(rev 76234)
@@ -0,0 +1,375 @@
+/* D I S P L A Y M A N A G E R . C P P
+ * BRL-CAD
+ *
+ * Copyright (c) 2020 United States Government as represented by
+ * the U.S. Army Research Laboratory.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this file; see the file named COPYING for more
+ * information.
+ */
+/** @file DisplayManager.cpp */
+//
+// Created by Sadeep on 12-Jun.
+//
+#include <rt/db_internal.h>
+#include <rt/functab.h>
+#include <rt/db_io.h>
+#include "DisplayManager.h"
+#include <rt/global.h>
+
+#if defined(__GNUC__) && !defined(__clang__)
+# pragma GCC diagnostic push
+#endif
+#if defined(__clang__)
+# pragma clang diagnostic push
+#endif
+#if defined(__GNUC__) && !defined(__clang__)
+# pragma GCC diagnostic ignored "-Wshadow"
+#endif
+#if defined(__clang__)
+# pragma clang diagnostic ignored "-Wshadow"
+#endif
+
+#define DM_SOLID_LINE 0
+#define DM_DASHED_LINE 1
+
+DisplayManager::DisplayManager(Display *display) : display(display) {
+ setFGColor(0,0,0, 1);
+ glLineStipple(1, 0xCF33);
+}
+
+void DisplayManager::drawVList(bn_vlist *vp) {
+
+ struct bn_vlist *tvp;
+ int first = 1;
+ int mflag = 1;
+ GLfloat originalPointSize, originalLineWidth;
+ GLdouble m[16];
+ GLdouble mt[16];
+ GLdouble tlate[3];
+ const float black[4] = {0.0, 0.0, 0.0, 0.0};
+
+ glGetFloatv(GL_POINT_SIZE, &originalPointSize);
+ glGetFloatv(GL_LINE_WIDTH, &originalLineWidth);
+
+ /* Viewing region is from -1.0 to +1.0 */
+
+ for (BU_LIST_FOR(tvp, bn_vlist, &vp->l)) {
+ int i;
+ int nused = tvp->nused;
+ int *cmd = tvp->cmd;
+ point_t *pt = tvp->pt;
+ GLdouble glpt[3];
+
+ for (i = 0; i < nused; i++, cmd++, pt++) {
+ VMOVE(glpt, *pt);
+
+ switch (*cmd) {
+ case BN_VLIST_LINE_MOVE:
+ /* Move, start line */
+ if (first == 0)
+ glEnd();
+ first = 0;
+
+ if (dmLight && mflag) {
+ mflag = 0;
+ glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION,
wireColor);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, black);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, black);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, black);
+
+ if (dmTransparency)
+ glDisable(GL_BLEND);
+ }
+
+ glBegin(GL_LINE_STRIP);
+ glVertex3dv(glpt);
+ break;
+ case BN_VLIST_MODEL_MAT:
+ if (first == 0) {
+ glEnd();
+ first = 1;
+ }
+
+ glMatrixMode(GL_MODELVIEW);
+ glPopMatrix();
+ break;
+ case BN_VLIST_DISPLAY_MAT:
+ glMatrixMode(GL_MODELVIEW);
+ glGetDoublev(GL_MODELVIEW_MATRIX, m);
+
+ MAT_TRANSPOSE(mt, m);
+ MAT4X3PNT(tlate, mt, glpt);
+
+ glPushMatrix();
+ glLoadIdentity();
+ glTranslated(tlate[0], tlate[1], tlate[2]);
+ /* 96 dpi = 3.78 pixel/mm hardcoded */
+ glScaled(2. * 3.78 / display->getW(),
+ 2. * 3.78 / display->getH(),
+ 1.);
+ break;
+ case BN_VLIST_POLY_START:
+ case BN_VLIST_TRI_START:
+ /* Start poly marker & normal */
+
+ if (dmLight && mflag) {
+ mflag = 0;
+ glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, black);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT,
ambientColor);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR,
specularColor);
+ glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuseColor);
+
+ switch (dmLight) {
+ case 1:
+ break;
+ case 2:
+ glMaterialfv(GL_BACK, GL_DIFFUSE,
diffuseColor);
+ break;
+ case 3:
+ glMaterialfv(GL_BACK, GL_DIFFUSE,
backDiffuseColorDark);
+ break;
+ default:
+ glMaterialfv(GL_BACK, GL_DIFFUSE,
backDiffuseColorLight);
+ break;
+ }
+
+ if (dmTransparency)
+ glEnable(GL_BLEND);
+ }
+
+ if (*cmd == BN_VLIST_POLY_START) {
+ if (first == 0)
+ glEnd();
+
+ glBegin(GL_POLYGON);
+ } else if (first)
+ glBegin(GL_TRIANGLES);
+
+ /* Set surface normal (vl_pnt points outward) */
+ glNormal3dv(glpt);
+
+ first = 0;
+
+ break;
+ case BN_VLIST_LINE_DRAW:
+ case BN_VLIST_POLY_MOVE:
+ case BN_VLIST_POLY_DRAW:
+ case BN_VLIST_TRI_MOVE:
+ case BN_VLIST_TRI_DRAW:
+ glVertex3dv(glpt);
+
+ break;
+ case BN_VLIST_POLY_END:
+ /* Draw, End Polygon */
+ glVertex3dv(glpt);
+ glEnd();
+ first = 1;
+ break;
+ case BN_VLIST_TRI_END:
+ break;
+ case BN_VLIST_POLY_VERTNORM:
+ case BN_VLIST_TRI_VERTNORM:
+ /* Set per-vertex normal. Given before vert. */
+ glNormal3dv(glpt);
+ break;
+ case BN_VLIST_POINT_DRAW:
+ if (first == 0)
+ glEnd();
+ first = 0;
+ glBegin(GL_POINTS);
+ glVertex3dv(glpt);
+ break;
+ case BN_VLIST_LINE_WIDTH: {
+ GLfloat lineWidth = (GLfloat) (*pt)[0];
+ if (lineWidth > 0.0) {
+ glLineWidth(lineWidth);
+ }
+ break;
+ }
+ case BN_VLIST_POINT_SIZE: {
+ GLfloat pointSize = (GLfloat) (*pt)[0];
+ if (pointSize > 0.0) {
+ glPointSize(pointSize);
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ if (first == 0)
+ glEnd();
+
+ if (dmLight && dmTransparency)
+ glDisable(GL_BLEND);
+
+ glPointSize(originalPointSize);
+ glLineWidth(originalLineWidth);
+ return;
+}
+
+
+void DisplayManager::setFGColor(float r, float g, float b, float transparency)
{
+ wireColor[0] = r;
+ wireColor[1] = g;
+ wireColor[2] = b;
+ wireColor[3] = transparency;
+
+ diffuseColor[0] = wireColor[0] * 0.6f;
+ diffuseColor[1] = wireColor[1] * 0.6f;
+ diffuseColor[2] = wireColor[2] * 0.6f;
+ diffuseColor[3] = wireColor[3];
+
+ ambientColor[0] = wireColor[0] * 0.2f;
+ ambientColor[1] = wireColor[1] * 0.2f;
+ ambientColor[2] = wireColor[2] * 0.2f;
+ ambientColor[3] = wireColor[3];
+
+ specularColor[0] = ambientColor[0];
+ specularColor[1] = ambientColor[1];
+ specularColor[2] = ambientColor[2];
+ specularColor[3] = ambientColor[3];
+
+ backDiffuseColorDark[0] = wireColor[0] * 0.3f;
+ backDiffuseColorDark[1] = wireColor[1] * 0.3f;
+ backDiffuseColorDark[2] = wireColor[2] * 0.3f;
+ backDiffuseColorDark[3] = wireColor[3];
+
+ backDiffuseColorLight[0] = wireColor[0] * 0.9f;
+ backDiffuseColorLight[1] = wireColor[1] * 0.9f;
+ backDiffuseColorLight[2] = wireColor[2] * 0.9f;
+ backDiffuseColorLight[3] = wireColor[3];
+
+ glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, ambientColor);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, specularColor);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, diffuseColor);
+}
+
+/*
+ * Set the style of the line
+ *
+ * Valid Styles,
+ * DM_SOLID_LINE=0
+ * DM_DASHED_LINE=1
+ */
+void DisplayManager::setLineStyle(int style)
+{
+ if (style == DM_DASHED_LINE) {
+ glEnable(GL_LINE_STIPPLE);
+ }
+ else{
+ glDisable(GL_LINE_STIPPLE);
+ }
+}
+
+void DisplayManager::setLineWidth(int width)
+{
+ glLineWidth((GLfloat) width);
+}
+
+/*
+ * Set the width and style of the line.
+ *
+ * Valid Styles,
+ * DM_SOLID_LINE=0
+ * DM_DASHED_LINE=1
+ */
+void DisplayManager::setLineAttr(int width, int style)
+{
+ if (width>0) {
+ glLineWidth((GLfloat) width);
+ }
+
+ if (style == DM_DASHED_LINE) {
+ glEnable(GL_LINE_STIPPLE);
+ }
+ else {
+ glDisable(GL_LINE_STIPPLE);
+ }
+}
+
+/*
+ * Displays a saved display list identified by `list`
+ */
+void DisplayManager::drawDList(unsigned int list) {
+ glCallList((GLuint) list);
+}
+
+/*
+ * Generates `range` number of display lists and returns first display list's
index
+ */
+unsigned int DisplayManager::genDLists(size_t range)
+{
+ return glGenLists((GLsizei)range);
+}
+
+/*
+ * Supported subsequent opengl commands are compiled into the display list
`list` rather than being rendered to the screen.
+ * Should have called genDLists and generated the display list before calling
this.
+ */
+void DisplayManager::beginDList(unsigned int list)
+{
+ glNewList((GLuint)list, GL_COMPILE);
+}
+
+/*
+ * End of the display list initiated by beginDList.
+ */
+void DisplayManager::endDList()
+{
+ glEndList();
+}
+
+void DisplayManager::freeDLists(unsigned int list, int range)
+{
+ glDeleteLists((GLuint)list, (GLsizei)range);
+}
+void DisplayManager::saveState(){
+ glPushAttrib(GL_ALL_ATTRIB_BITS);
+}
+void DisplayManager::restoreState(){
+ glPopAttrib();
+}
+
+void DisplayManager::drawBegin()
+{
+ glClearColor(bgColor[0],bgColor[1],bgColor[2],1);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+// glMatrixMode(GL_PROJECTION);
+// glPopMatrix();
+// glMatrixMode(GL_MODELVIEW);
+// glPopMatrix();
+
+}
+
+void DisplayManager::loadMatrix(const GLfloat *m)
+{
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ glLoadMatrixf(m);
+}
+void DisplayManager::loadPMatrix(const GLfloat *m)
+{
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glLoadMatrixf(m);
+}
+
+#if defined(__GNUC__) && !defined(__clang__)
+# pragma GCC diagnostic pop
+#endif
+#if defined(__clang__)
+# pragma clang diagnostic pop
+#endif
+
Property changes on: brlcad/trunk/src/qged/display/DisplayManager.cpp
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: brlcad/trunk/src/qged/display/DisplayManager.h
===================================================================
--- brlcad/trunk/src/qged/display/DisplayManager.h
(rev 0)
+++ brlcad/trunk/src/qged/display/DisplayManager.h 2020-06-29 13:53:57 UTC
(rev 76234)
@@ -0,0 +1,77 @@
+/* D I S P L A Y M A N A G E R . H
+ * BRL-CAD
+ *
+ * Copyright (c) 2020 United States Government as represented by
+ * the U.S. Army Research Laboratory.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this file; see the file named COPYING for more
+ * information.
+ */
+/** @file DisplayManager.h */
+//
+// Created by Sadeep on 12-Jun.
+//
+
+#ifndef RT3_DisplayManager_H
+#define RT3_DisplayManager_H
+#ifdef _WIN32
+#include <Windows.h>
+#endif
+
+
+#include "vmath.h"
+#include "Display.h"
+#include <rt/tree.h>
+
+
+
+
+class DisplayManager{
+public:
+ explicit DisplayManager(Display *display);
+
+ // most of the methods below correspond to a method with a similar name
from libdm
+ void drawVList(bn_vlist *vp);
+ void setFGColor(float r, float g, float b, float transparency);
+ void setLineAttr(int width, int style);
+ void setLineStyle(int style);
+ void setLineWidth(int width);
+ unsigned int genDLists(size_t range);
+ void beginDList(unsigned int list);
+ void endDList();
+ void drawDList(unsigned int list);
+ void freeDLists(unsigned int list, int range);
+ void saveState();
+ void restoreState();
+ void drawBegin();
+ void loadMatrix(const GLfloat *m);
+ void loadPMatrix(const GLfloat *m);
+
+private:
+ Display *display;
+
+ int dmLight = 1;
+ bool dmTransparency = false;
+
+ float wireColor[4] = {.9,.1,.1,1};
+ float diffuseColor[4];
+ float ambientColor[4];
+ float specularColor[4];
+ float backDiffuseColorDark[4];
+ float backDiffuseColorLight[4];
+ float bgColor[3] = {0.0, 0.0, 0.125};
+
+};
+
+
+#endif //RT3_DisplayManager_H
Property changes on: brlcad/trunk/src/qged/display/DisplayManager.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: brlcad/trunk/src/qged/display/GeometryRenderer.cpp
===================================================================
--- brlcad/trunk/src/qged/display/GeometryRenderer.cpp
(rev 0)
+++ brlcad/trunk/src/qged/display/GeometryRenderer.cpp 2020-06-29 13:53:57 UTC
(rev 76234)
@@ -0,0 +1,139 @@
+/* G E O M E T R Y R E N D E R E R . C P P
+ * BRL-CAD
+ *
+ * Copyright (c) 2020 United States Government as represented by
+ * the U.S. Army Research Laboratory.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this file; see the file named COPYING for more
+ * information.
+ */
+/** @file GeometryRenderer.cpp */
+//
+// Created by Sadeep on 28-Jun.
+//
+
+#include "common.h"
+#include "GeometryRenderer.h"
+
+#if defined(__GNUC__) && !defined(__clang__)
+# pragma GCC diagnostic push
+#endif
+#if defined(__clang__)
+# pragma clang diagnostic push
+#endif
+#if defined(__GNUC__) && !defined(__clang__)
+# pragma GCC diagnostic ignored "-Wshadow"
+#endif
+#if defined(__clang__)
+# pragma clang diagnostic ignored "-Wshadow"
+#endif
+
+
+GeometryRenderer::GeometryRenderer(rt_wdb *database, DisplayManager
*displayManager) : database(database),
+
displayManager(displayManager) {}
+
+void GeometryRenderer::render() {
+ if (database == NULL) return;
+ displayManager->saveState();
+ glEnable(GL_LIGHTING);
+ for (auto i:solids) {
+ displayManager->drawDList(i);
+ }
+ displayManager->restoreState();
+}
+
+/*
+ * Clears existing display lists, iterate through each solid and generates
display lists by calling drawSolid on each
+ */
+void GeometryRenderer::onDatabaseUpdated() {
+ rt_i * r_db = rt_new_rti(database->dbip);
+
+ db_tree_state initState;
+ db_init_db_tree_state(&initState, r_db->rti_dbip, database->wdb_resp);
+ initState.ts_ttol = &r_db->rti_ttol;
+ initState.ts_tol = &r_db->rti_tol;
+
+ for (auto i: solids){
+ displayManager->freeDLists(i,1);
+ }
+ solids.clear();
+
+ struct directory **dbObjects = NULL;
+ int path_cnt = db_ls(database->dbip, DB_LS_TOPS, NULL, &dbObjects);
+ if (path_cnt) {
+ for (int i = 0; i < path_cnt; i++) {
+ const char *topObjectName = dbObjects[i]->d_namep;
+ db_walk_tree(r_db->rti_dbip, 1, &topObjectName, 1, &initState, 0,
0, drawSolid, this);
+ }
+ }
+
+ rt_free_rti(r_db);
+}
+
+
+/*
+ * Set the color and line attribute to suit a given solid, creates a display
list, plots and draws solid's vlist into the display list.
+ * The created display list is added to GeometryRenderer::solids
+ */
+tree *GeometryRenderer::drawSolid(db_tree_state *tsp, const db_full_path
*UNUSED(pathp), rt_db_internal *ip, void *clientData) {
+ tree *ret = TREE_NULL;
+ auto *geometryRenderer = static_cast<GeometryRenderer *>(clientData);
+ auto *displayManager = geometryRenderer->displayManager;
+
+ struct bu_list vhead;
+ BU_LIST_INIT(&vhead);
+
+ if (ip->idb_meth->ft_plot != 0) {
+ if (ip->idb_meth->ft_plot(&vhead, ip, tsp->ts_ttol, tsp->ts_tol, 0) ==
0) {
+ BU_GET(ret, tree);
+ RT_TREE_INIT(ret);
+ ret->tr_op = OP_NOP;
+ }
+ }
+
+ GLuint dlist = displayManager->genDLists(1);
+ displayManager->beginDList(dlist); // begin display list --------------
+
+ if (tsp->ts_mater.ma_color_valid) {
+ displayManager->setFGColor(tsp->ts_mater.ma_color[0],
tsp->ts_mater.ma_color[1], tsp->ts_mater.ma_color[2], 1);
+ }
+ else {
+ displayManager->setFGColor(geometryRenderer->defaultWireColor[0],
geometryRenderer->defaultWireColor[1],
+ geometryRenderer->defaultWireColor[2], 1);
+ }
+
+ displayManager->setLineStyle(tsp->ts_sofar & (TS_SOFAR_MINUS |
TS_SOFAR_INTER));
+ displayManager->drawVList(reinterpret_cast<bn_vlist *>(&vhead));
+ displayManager->endDList(); // end display list --------------
+
+ geometryRenderer->solids.push_back(dlist);
+
+ return ret;
+}
+
+rt_wdb *GeometryRenderer::getDatabase() {
+ return database;
+}
+
+void GeometryRenderer::setDatabase(rt_wdb *database) {
+ this->database = database;
+ onDatabaseUpdated();
+}
+
+#if defined(__GNUC__) && !defined(__clang__)
+# pragma GCC diagnostic pop
+#endif
+#if defined(__clang__)
+# pragma clang diagnostic pop
+#endif
+
Property changes on: brlcad/trunk/src/qged/display/GeometryRenderer.cpp
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: brlcad/trunk/src/qged/display/GeometryRenderer.h
===================================================================
--- brlcad/trunk/src/qged/display/GeometryRenderer.h
(rev 0)
+++ brlcad/trunk/src/qged/display/GeometryRenderer.h 2020-06-29 13:53:57 UTC
(rev 76234)
@@ -0,0 +1,65 @@
+/* G E O M E T R Y R E N D E R E R . H
+ * BRL-CAD
+ *
+ * Copyright (c) 2020 United States Government as represented by
+ * the U.S. Army Research Laboratory.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this file; see the file named COPYING for more
+ * information.
+ */
+/** @file GeometryRenderer.h */
+//
+// Created by Sadeep on 28-Jun.
+//
+
+#ifndef BRLCAD_GEOMETRYRENDERER_H
+#define BRLCAD_GEOMETRYRENDERER_H
+
+
+#include <rt/wdb.h>
+#include <rt/tree.h>
+#include <rt/db_instance.h>
+#include <rt/functab.h>
+#include <raytrace.h>
+#include <rt/db_io.h>
+#include "DisplayManager.h"
+#include "Renderable.h"
+#include <rt/global.h>
+
+struct rt_i;
+struct bu_list;
+struct bn_vlist;
+struct db_tree_state;
+struct db_full_path;
+struct rt_db_internal;
+union tree;
+
+class GeometryRenderer:public Renderable {
+public:
+ GeometryRenderer(rt_wdb *database, DisplayManager *displayManager);
+
+ rt_wdb * getDatabase();
+ void setDatabase(rt_wdb *database);
+
+ static tree *drawSolid(db_tree_state *tsp, const db_full_path *pathp,
rt_db_internal *ip, void *clientData);
+ void onDatabaseUpdated();
+ void render();
+private:
+ rt_wdb *database;
+ DisplayManager *displayManager;
+ float defaultWireColor[3] = {1,.1,.4};
+ std::vector<int> solids; // contains the display list of each solid
+};
+
+
+#endif //BRLCAD_GEOMETRYRENDERER_H
Property changes on: brlcad/trunk/src/qged/display/GeometryRenderer.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: brlcad/trunk/src/qged/display/OrthographicCamera.cpp
===================================================================
--- brlcad/trunk/src/qged/display/OrthographicCamera.cpp
(rev 0)
+++ brlcad/trunk/src/qged/display/OrthographicCamera.cpp 2020-06-29
13:53:57 UTC (rev 76234)
@@ -0,0 +1,109 @@
+/* O R T H O G R A P H I C C A M E R A . C P P
+ * BRL-CAD
+ *
+ * Copyright (c) 2020 United States Government as represented by
+ * the U.S. Army Research Laboratory.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this file; see the file named COPYING for more
+ * information.
+ */
+/** @file OrthographicCamera.cpp */
+//
+// Created by Sadeep on 09-Jun.
+//
+
+#include "common.h"
+
+#include "OrthographicCamera.h"
+#include <glm/glm.hpp>
+#include <glm/gtx/transform.hpp>
+
+#if defined(__GNUC__) && !defined(__clang__)
+# pragma GCC diagnostic push
+#endif
+#if defined(__clang__)
+# pragma clang diagnostic push
+#endif
+#if defined(__GNUC__) && !defined(__clang__)
+# pragma GCC diagnostic ignored "-Wshadow"
+#endif
+#if defined(__clang__)
+# pragma clang diagnostic ignored "-Wshadow"
+#endif
+
+OrthographicCamera::OrthographicCamera() = default;
+
+glm::mat4 OrthographicCamera::modelViewMatrix() const {
+ auto rotationMatrixAroundX = glm::rotate(glm::radians(angleAroundAxes.x),
axisX);
+ auto rotationMatrixAroundY = glm::rotate(glm::radians(angleAroundAxes.y),
axisY);
+ auto rotationMatrixAroundZ = glm::rotate(glm::radians(angleAroundAxes.z),
axisZ);
+ auto rotationMatrix = rotationMatrixAroundX * rotationMatrixAroundY *
rotationMatrixAroundZ;
+
+ return glm::translate(rotationMatrix, eyePosition);
+}
+
+glm::mat4 OrthographicCamera::projectionMatrix() const {
+ return glm::ortho(-zoom * w / h, zoom * w / h, -zoom, zoom, nearPlane,
farPlane);
+}
+
+void OrthographicCamera::setWH(float w, float h) {
+ this->w = w;
+ this->h = h;
+}
+
+void OrthographicCamera::processRotateRequest(const int &deltaX, const int
&deltaY, const bool &thirdAxis) {
+ if (deltaX < -mouseMaxDrag || deltaX > +mouseMaxDrag || deltaY <
-mouseMaxDrag || deltaY > +mouseMaxDrag) {
+ return;
+ }
+
+ float deltaAngleX = float(deltaX) / h;
+ float deltaAngleY = float(deltaY) / h;
+ if (thirdAxis) {
+ angleAroundAxes.y += deltaAngleX * eyeRotationPerMouseDelta;
+ } else {
+ angleAroundAxes.z += deltaAngleX * eyeRotationPerMouseDelta;
+ }
+ angleAroundAxes.x += deltaAngleY * eyeRotationPerMouseDelta;
+
+}
+
+void OrthographicCamera::processMoveRequest(const int &deltaX, const int
&deltaY) {
+ if (deltaX < -mouseMaxDrag || deltaX > +mouseMaxDrag || deltaY <
-mouseMaxDrag || deltaY > +mouseMaxDrag) {
+ return;
+ }
+
+ auto rotationMatrixAroundZ = glm::rotate(glm::radians(-angleAroundAxes.z),
axisZ);
+ auto rotationMatrixAroundY = glm::rotate(glm::radians(-angleAroundAxes.y),
axisY);
+ auto rotationMatrixAroundX = glm::rotate(glm::radians(-angleAroundAxes.x),
axisX);
+ auto rotationMatrix = rotationMatrixAroundZ * rotationMatrixAroundY *
rotationMatrixAroundX;
+
+ glm::vec3 cameraRightDirection(rotationMatrix * glm::vec4(axisX, 1.0));
+ eyePosition += float(deltaX) * eyeMovementPerMouseDelta *
cameraRightDirection * zoom;
+
+ glm::vec3 cameraUpDirection(rotationMatrix * glm::vec4(axisY, 1.0));
+ eyePosition -= float(deltaY) * eyeMovementPerMouseDelta *
cameraUpDirection * zoom;
+}
+
+void OrthographicCamera::processZoomRequest(const int &deltaWheelAngle) {
+ float zoomFactor = 1 - zoomFactorMultiplier * float(deltaWheelAngle);
+ zoom = pow(zoom, zoomFactor);
+ if (zoom < zoomLowerBound) zoom = zoomLowerBound;
+}
+
+#if defined(__GNUC__) && !defined(__clang__)
+# pragma GCC diagnostic pop
+#endif
+#if defined(__clang__)
+# pragma clang diagnostic pop
+#endif
+
Property changes on: brlcad/trunk/src/qged/display/OrthographicCamera.cpp
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: brlcad/trunk/src/qged/display/OrthographicCamera.h
===================================================================
--- brlcad/trunk/src/qged/display/OrthographicCamera.h
(rev 0)
+++ brlcad/trunk/src/qged/display/OrthographicCamera.h 2020-06-29 13:53:57 UTC
(rev 76234)
@@ -0,0 +1,68 @@
+/* O R T H O G R A P H I C C A M E R A . H
+ * BRL-CAD
+ *
+ * Copyright (c) 2020 United States Government as represented by
+ * the U.S. Army Research Laboratory.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this file; see the file named COPYING for more
+ * information.
+ */
+/** @file OrthographicCamera.h */
+//
+// Created by Sadeep on 09-Jun.
+//
+
+#ifndef RT3_OrthographicCAMERA_H
+#define RT3_OrthographicCAMERA_H
+
+
+#include <glm/detail/type_mat4x4.hpp>
+#include "Camera.h"
+
+
+class OrthographicCamera : public Camera {
+private:
+ const glm::vec3 initialEyePosition = glm::vec3(0.0f, 0.0f, 0.0f);
+ const glm::vec3 initialAngleAroundAxes = glm::vec3(295.0f, 0.0f, 235.0f);
+
+ const float nearPlane = -2000000.0f;
+ const float farPlane = 2000000.0f;
+ const float eyeMovementPerMouseDelta = 0.002075f;
+ const float eyeRotationPerMouseDelta = 120.f;
+ const float zoomFactorMultiplier = 0.001;
+ const float zoomLowerBound = 0.00001;
+ const int mouseMaxDrag = 500;
+
+ glm::vec3 angleAroundAxes = initialAngleAroundAxes; // Camera direction in
degrees
+ float zoom = 600;
+ glm::vec3 eyePosition = initialEyePosition; // Camera coordinates
+ float w = 400, h = 400; // Display width and height.
+
+public:
+ OrthographicCamera();
+
+ void setWH(float w, float h) override;
+
+ void processMoveRequest(const int &deltaX, const int &deltaY) override;
+
+ void processRotateRequest(const int &deltaX, const int &deltaY, const bool
&thirdAxis) override;
+
+ void processZoomRequest(const int &deltaWheelAngle) override;
+
+ glm::mat4 modelViewMatrix() const override;
+
+ glm::mat4 projectionMatrix() const override;
+};
+
+
+#endif //RT3_OrthographicCAMERA_H
Property changes on: brlcad/trunk/src/qged/display/OrthographicCamera.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: brlcad/trunk/src/qged/display/README.txt
===================================================================
--- brlcad/trunk/src/qged/display/README.txt (rev 0)
+++ brlcad/trunk/src/qged/display/README.txt 2020-06-29 13:53:57 UTC (rev
76234)
@@ -0,0 +1,8 @@
+Display - the qt widget (QOpenGLWidget) that displays stuff,
handle mouse move, asks all renderers to draw things
+Renderer - a virtual class, GeometryRenderer and AxesRenderer are
subclasses
+GeometryRenderer- manages rendering a database
+AxesRenderer - manages rendering axes
+Camera - a virtual class, input is mouse/keyboard events etc,
outputs projection and modelview matrices. OrthographicCamera is a subclass
+DisplayManager - similar to dm_wgl.c. Renderers use this. (need to fix
AxesRenderer to utilize this rather than direct opengl)
+
+Display puts everything together
Property changes on: brlcad/trunk/src/qged/display/README.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: brlcad/trunk/src/qged/display/Renderable.h
===================================================================
--- brlcad/trunk/src/qged/display/Renderable.h (rev 0)
+++ brlcad/trunk/src/qged/display/Renderable.h 2020-06-29 13:53:57 UTC (rev
76234)
@@ -0,0 +1,34 @@
+/* R E N D E R A B L E . H
+ * BRL-CAD
+ *
+ * Copyright (c) 2020 United States Government as represented by
+ * the U.S. Army Research Laboratory.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this file; see the file named COPYING for more
+ * information.
+ */
+/** @file Renderable.h */
+//
+// Created by Sadeep on 29-Jun.
+//
+
+#ifndef BRLCAD_RENDERABLE_H
+#define BRLCAD_RENDERABLE_H
+
+class Renderable {
+public:
+ virtual void render() = 0;
+ virtual ~Renderable() {}
+};
+
+#endif //BRLCAD_RENDERABLE_H
Property changes on: brlcad/trunk/src/qged/display/Renderable.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: brlcad/trunk/src/qged/display/glm/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/qged/display/glm/CMakeLists.txt
(rev 0)
+++ brlcad/trunk/src/qged/display/glm/CMakeLists.txt 2020-06-29 13:53:57 UTC
(rev 76234)
@@ -0,0 +1,10 @@
+cmake_minimum_required(VERSION 3.2 FATAL_ERROR)
+cmake_policy(VERSION 3.2)
+
+set(GLM_VERSION "0.9.9")
+project(glm VERSION ${GLM_VERSION} LANGUAGES CXX)
+enable_testing()
+
+add_subdirectory(glm)
+add_library(glm::glm ALIAS glm)
+
Property changes on: brlcad/trunk/src/qged/display/glm/CMakeLists.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: brlcad/trunk/src/qged/display/glm/cmake/glm/glmConfig-version.cmake
===================================================================
--- brlcad/trunk/src/qged/display/glm/cmake/glm/glmConfig-version.cmake
(rev 0)
+++ brlcad/trunk/src/qged/display/glm/cmake/glm/glmConfig-version.cmake
2020-06-29 13:53:57 UTC (rev 76234)
@@ -0,0 +1,11 @@
+if(${PACKAGE_FIND_VERSION_MAJOR} EQUAL 0)
+ if (${PACKAGE_FIND_VERSION} VERSION_LESS ${GLM_VERSION})
+ set(PACKAGE_VERSION_COMPATIBLE 1)
+ endif()
+ if(${PACKAGE_FIND_VERSION} VERSION_EQUAL ${GLM_VERSION})
+ set(PACKAGE_VERSION_EXACT 1)
+ endif()
+else()
+ set(PACKAGE_VERSION_UNSUITABLE 1)
+endif()
+
Property changes on:
brlcad/trunk/src/qged/display/glm/cmake/glm/glmConfig-version.cmake
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: brlcad/trunk/src/qged/display/glm/cmake/glm/glmConfig.cmake
===================================================================
--- brlcad/trunk/src/qged/display/glm/cmake/glm/glmConfig.cmake
(rev 0)
+++ brlcad/trunk/src/qged/display/glm/cmake/glm/glmConfig.cmake 2020-06-29
13:53:57 UTC (rev 76234)
@@ -0,0 +1,22 @@
+cmake_minimum_required(VERSION 3.2 FATAL_ERROR)
+cmake_policy(VERSION 3.2)
+
+set(GLM_VERSION 0.9.9)
+
+get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+if (_IMPORT_PREFIX STREQUAL "/")
+ set(_IMPORT_PREFIX "")
+endif()
+
+# Set the old GLM_INCLUDE_DIRS variable for backwards compatibility
+set(GLM_INCLUDE_DIRS ${_IMPORT_PREFIX})
+
+add_library(glm::glm INTERFACE IMPORTED)
+set_target_properties(glm::glm PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES ${GLM_INCLUDE_DIRS})
+
+mark_as_advanced(glm_DIR)
+set(_IMPORT_PREFIX)
+
Property changes on: brlcad/trunk/src/qged/display/glm/cmake/glm/glmConfig.cmake
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: brlcad/trunk/src/qged/display/glm/copying.txt
===================================================================
--- brlcad/trunk/src/qged/display/glm/copying.txt
(rev 0)
+++ brlcad/trunk/src/qged/display/glm/copying.txt 2020-06-29 13:53:57 UTC
(rev 76234)
@@ -0,0 +1,29 @@
+================================================================================
+OpenGL Mathematics (GLM)
+--------------------------------------------------------------------------------
+GLM is licensed under The Happy Bunny License or MIT License
+
+BRL-CAD will use glm under the standard MIT license
+
+================================================================================
+The MIT License
+--------------------------------------------------------------------------------
+Copyright (c) 2005 - 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
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
Property changes on: brlcad/trunk/src/qged/display/glm/copying.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: brlcad/trunk/src/qged/display/glm/glm/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/qged/display/glm/glm/CMakeLists.txt
(rev 0)
+++ brlcad/trunk/src/qged/display/glm/glm/CMakeLists.txt 2020-06-29
13:53:57 UTC (rev 76234)
@@ -0,0 +1,70 @@
+file(GLOB ROOT_SOURCE *.cpp)
+file(GLOB ROOT_INLINE *.inl)
+file(GLOB ROOT_HEADER *.hpp)
+file(GLOB ROOT_TEXT ../*.txt)
+file(GLOB ROOT_MD ../*.md)
+file(GLOB ROOT_NAT ../util/glm.natvis)
+
+file(GLOB_RECURSE CORE_SOURCE ./detail/*.cpp)
+file(GLOB_RECURSE CORE_INLINE ./detail/*.inl)
+file(GLOB_RECURSE CORE_HEADER ./detail/*.hpp)
+
+file(GLOB_RECURSE EXT_SOURCE ./ext/*.cpp)
+file(GLOB_RECURSE EXT_INLINE ./ext/*.inl)
+file(GLOB_RECURSE EXT_HEADER ./ext/*.hpp)
+
+file(GLOB_RECURSE GTC_SOURCE ./gtc/*.cpp)
+file(GLOB_RECURSE GTC_INLINE ./gtc/*.inl)
+file(GLOB_RECURSE GTC_HEADER ./gtc/*.hpp)
+
+file(GLOB_RECURSE GTX_SOURCE ./gtx/*.cpp)
+file(GLOB_RECURSE GTX_INLINE ./gtx/*.inl)
+file(GLOB_RECURSE GTX_HEADER ./gtx/*.hpp)
+
+file(GLOB_RECURSE SIMD_SOURCE ./simd/*.cpp)
+file(GLOB_RECURSE SIMD_INLINE ./simd/*.inl)
+file(GLOB_RECURSE SIMD_HEADER ./simd/*.h)
+
+source_group("Text Files" FILES ${ROOT_TEXT} ${ROOT_MD})
+source_group("Core Files" FILES ${CORE_SOURCE})
+source_group("Core Files" FILES ${CORE_INLINE})
+source_group("Core Files" FILES ${CORE_HEADER})
+source_group("EXT Files" FILES ${EXT_SOURCE})
+source_group("EXT Files" FILES ${EXT_INLINE})
+source_group("EXT Files" FILES ${EXT_HEADER})
+source_group("GTC Files" FILES ${GTC_SOURCE})
+source_group("GTC Files" FILES ${GTC_INLINE})
+source_group("GTC Files" FILES ${GTC_HEADER})
+source_group("GTX Files" FILES ${GTX_SOURCE})
+source_group("GTX Files" FILES ${GTX_INLINE})
+source_group("GTX Files" FILES ${GTX_HEADER})
+source_group("SIMD Files" FILES ${SIMD_SOURCE})
+source_group("SIMD Files" FILES ${SIMD_INLINE})
+source_group("SIMD Files" FILES ${SIMD_HEADER})
+
+add_library(glm INTERFACE)
+target_include_directories(glm INTERFACE ../)
+
+if(BUILD_STATIC_LIBS)
+add_library(glm_static STATIC ${ROOT_TEXT} ${ROOT_MD} ${ROOT_NAT}
+ ${ROOT_SOURCE} ${ROOT_INLINE} ${ROOT_HEADER}
+ ${CORE_SOURCE} ${CORE_INLINE} ${CORE_HEADER}
+ ${EXT_SOURCE} ${EXT_INLINE} ${EXT_HEADER}
+ ${GTC_SOURCE} ${GTC_INLINE} ${GTC_HEADER}
+ ${GTX_SOURCE} ${GTX_INLINE} ${GTX_HEADER}
+ ${SIMD_SOURCE} ${SIMD_INLINE} ${SIMD_HEADER})
+ target_link_libraries(glm_static PUBLIC glm)
+ add_library(glm::glm_static ALIAS glm_static)
+endif()
+
+if(BUILD_SHARED_LIBS)
+add_library(glm_shared SHARED ${ROOT_TEXT} ${ROOT_MD} ${ROOT_NAT}
+ ${ROOT_SOURCE} ${ROOT_INLINE} ${ROOT_HEADER}
+ ${CORE_SOURCE} ${CORE_INLINE} ${CORE_HEADER}
+ ${EXT_SOURCE} ${EXT_INLINE} ${EXT_HEADER}
+ ${GTC_SOURCE} ${GTC_INLINE} ${GTC_HEADER}
+ ${GTX_SOURCE} ${GTX_INLINE} ${GTX_HEADER}
+ ${SIMD_SOURCE} ${SIMD_INLINE} ${SIMD_HEADER})
+ target_link_libraries(glm_shared PUBLIC glm)
+ add_library(glm::glm_shared ALIAS glm_shared)
+endif()
Property changes on: brlcad/trunk/src/qged/display/glm/glm/CMakeLists.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: brlcad/trunk/src/qged/display/glm/glm/common.hpp
===================================================================
--- brlcad/trunk/src/qged/display/glm/glm/common.hpp
(rev 0)
+++ brlcad/trunk/src/qged/display/glm/glm/common.hpp 2020-06-29 13:53:57 UTC
(rev 76234)
@@ -0,0 +1,539 @@
+/// @ref core
+/// @file glm/common.hpp
+///
+/// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+///
+/// @defgroup core_func_common Common functions
+/// @ingroup core
+///
+/// Provides GLSL common functions
+///
+/// These all operate component-wise. The description is per component.
+///
+/// Include <glm/common.hpp> to use these core features.
+
+#pragma once
+
+#include "detail/qualifier.hpp"
+#include "detail/_fixes.hpp"
+
+namespace glm
+{
+ /// @addtogroup core_func_common
+ /// @{
+
+ /// Returns x if x >= 0; otherwise, it returns -x.
+ ///
+ /// @tparam genType floating-point or signed integer; scalar or vector
types.
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/abs.xml">GLSL abs man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<typename genType>
+ GLM_FUNC_DECL GLM_CONSTEXPR genType abs(genType x);
+
+ /// Returns x if x >= 0; otherwise, it returns -x.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the
dimension of the vector
+ /// @tparam T Floating-point or signed integer scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/abs.xml">GLSL abs man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<length_t L, typename T, qualifier Q>
+ GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> abs(vec<L, T, Q> const& x);
+
+ /// Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the
dimension of the vector
+ /// @tparam T Floating-point scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/sign.xml">GLSL sign man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<length_t L, typename T, qualifier Q>
+ GLM_FUNC_DECL vec<L, T, Q> sign(vec<L, T, Q> const& x);
+
+ /// Returns a value equal to the nearest integer that is less then or
equal to x.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the
dimension of the vector
+ /// @tparam T Floating-point scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/floor.xml">GLSL floor man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<length_t L, typename T, qualifier Q>
+ GLM_FUNC_DECL vec<L, T, Q> floor(vec<L, T, Q> const& x);
+
+ /// Returns a value equal to the nearest integer to x
+ /// whose absolute value is not larger than the absolute value of x.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the
dimension of the vector
+ /// @tparam T Floating-point scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/trunc.xml">GLSL trunc man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<length_t L, typename T, qualifier Q>
+ GLM_FUNC_DECL vec<L, T, Q> trunc(vec<L, T, Q> const& x);
+
+ /// Returns a value equal to the nearest integer to x.
+ /// The fraction 0.5 will round in a direction chosen by the
+ /// implementation, presumably the direction that is fastest.
+ /// This includes the possibility that round(x) returns the
+ /// same value as roundEven(x) for all values of x.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the
dimension of the vector
+ /// @tparam T Floating-point scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/round.xml">GLSL round man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<length_t L, typename T, qualifier Q>
+ GLM_FUNC_DECL vec<L, T, Q> round(vec<L, T, Q> const& x);
+
+ /// Returns a value equal to the nearest integer to x.
+ /// A fractional part of 0.5 will round toward the nearest even
+ /// integer. (Both 3.5 and 4.5 for x will return 4.0.)
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the
dimension of the vector
+ /// @tparam T Floating-point scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/roundEven.xml">GLSL
roundEven man page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ /// @see <a
href="http://developer.amd.com/documentation/articles/pages/New-Round-to-Even-Technique.aspx">New
round to even technique</a>
+ template<length_t L, typename T, qualifier Q>
+ GLM_FUNC_DECL vec<L, T, Q> roundEven(vec<L, T, Q> const& x);
+
+ /// Returns a value equal to the nearest integer
+ /// that is greater than or equal to x.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the
dimension of the vector
+ /// @tparam T Floating-point scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/ceil.xml">GLSL ceil man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<length_t L, typename T, qualifier Q>
+ GLM_FUNC_DECL vec<L, T, Q> ceil(vec<L, T, Q> const& x);
+
+ /// Return x - floor(x).
+ ///
+ /// @tparam genType Floating-point scalar or vector types.
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/fract.xml">GLSL fract man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<typename genType>
+ GLM_FUNC_DECL genType fract(genType x);
+
+ /// Return x - floor(x).
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the
dimension of the vector
+ /// @tparam T Floating-point scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/fract.xml">GLSL fract man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<length_t L, typename T, qualifier Q>
+ GLM_FUNC_DECL vec<L, T, Q> fract(vec<L, T, Q> const& x);
+
+ template<typename genType>
+ GLM_FUNC_DECL genType mod(genType x, genType y);
+
+ template<length_t L, typename T, qualifier Q>
+ GLM_FUNC_DECL vec<L, T, Q> mod(vec<L, T, Q> const& x, T y);
+
+ /// Modulus. Returns x - y * floor(x / y)
+ /// for each component in x using the floating point value y.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the
dimension of the vector
+ /// @tparam T Floating-point scalar types, include glm/gtc/integer for
integer scalar types support
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/mod.xml">GLSL mod man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<length_t L, typename T, qualifier Q>
+ GLM_FUNC_DECL vec<L, T, Q> mod(vec<L, T, Q> const& x, vec<L, T, Q>
const& y);
+
+ /// Returns the fractional part of x and sets i to the integer
+ /// part (as a whole number floating point value). Both the
+ /// return value and the output parameter will have the same
+ /// sign as x.
+ ///
+ /// @tparam genType Floating-point scalar or vector types.
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/modf.xml">GLSL modf man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<typename genType>
+ GLM_FUNC_DECL genType modf(genType x, genType& i);
+
+ /// Returns y if y < x; otherwise, it returns x.
+ ///
+ /// @tparam genType Floating-point or integer; scalar or vector types.
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/min.xml">GLSL min man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<typename genType>
+ GLM_FUNC_DECL GLM_CONSTEXPR genType min(genType x, genType y);
+
+ /// Returns y if y < x; otherwise, it returns x.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the
dimension of the vector
+ /// @tparam T Floating-point or integer scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/min.xml">GLSL min man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<length_t L, typename T, qualifier Q>
+ GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> min(vec<L, T, Q> const& x, T
y);
+
+ /// Returns y if y < x; otherwise, it returns x.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the
dimension of the vector
+ /// @tparam T Floating-point or integer scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/min.xml">GLSL min man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<length_t L, typename T, qualifier Q>
+ GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> min(vec<L, T, Q> const& x,
vec<L, T, Q> const& y);
+
+ /// Returns y if x < y; otherwise, it returns x.
+ ///
+ /// @tparam genType Floating-point or integer; scalar or vector types.
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/max.xml">GLSL max man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<typename genType>
+ GLM_FUNC_DECL GLM_CONSTEXPR genType max(genType x, genType y);
+
+ /// Returns y if x < y; otherwise, it returns x.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the
dimension of the vector
+ /// @tparam T Floating-point or integer scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/max.xml">GLSL max man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<length_t L, typename T, qualifier Q>
+ GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> max(vec<L, T, Q> const& x, T
y);
+
+ /// Returns y if x < y; otherwise, it returns x.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the
dimension of the vector
+ /// @tparam T Floating-point or integer scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/max.xml">GLSL max man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<length_t L, typename T, qualifier Q>
+ GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> max(vec<L, T, Q> const& x,
vec<L, T, Q> const& y);
+
+ /// Returns min(max(x, minVal), maxVal) for each component in x
+ /// using the floating-point values minVal and maxVal.
+ ///
+ /// @tparam genType Floating-point or integer; scalar or vector types.
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/clamp.xml">GLSL clamp man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<typename genType>
+ GLM_FUNC_DECL GLM_CONSTEXPR genType clamp(genType x, genType minVal,
genType maxVal);
+
+ /// Returns min(max(x, minVal), maxVal) for each component in x
+ /// using the floating-point values minVal and maxVal.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the
dimension of the vector
+ /// @tparam T Floating-point or integer scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/clamp.xml">GLSL clamp man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<length_t L, typename T, qualifier Q>
+ GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> clamp(vec<L, T, Q> const& x, T
minVal, T maxVal);
+
+ /// Returns min(max(x, minVal), maxVal) for each component in x
+ /// using the floating-point values minVal and maxVal.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the
dimension of the vector
+ /// @tparam T Floating-point or integer scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/clamp.xml">GLSL clamp man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<length_t L, typename T, qualifier Q>
+ GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> clamp(vec<L, T, Q> const& x,
vec<L, T, Q> const& minVal, vec<L, T, Q> const& maxVal);
+
+ /// If genTypeU is a floating scalar or vector:
+ /// 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].
+ ///
+ /// If genTypeU is a boolean scalar or vector:
+ /// Selects which vector each returned component comes
+ /// from. For a component of 'a' that is false, the
+ /// corresponding component of 'x' is returned. For a
+ /// component of 'a' that is true, the corresponding
+ /// component of 'y' is returned. Components of 'x' and 'y' that
+ /// are not selected are allowed to be invalid floating point
+ /// values and will have no effect on the results. Thus, this
+ /// provides different functionality than
+ /// genType mix(genType x, genType y, genType(a))
+ /// where a is a Boolean vector.
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/mix.xml">GLSL mix man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ ///
+ /// @param[in] x Value to interpolate.
+ /// @param[in] y Value to interpolate.
+ /// @param[in] a Interpolant.
+ ///
+ /// @tparam genTypeT Floating point scalar or vector.
+ /// @tparam genTypeU Floating point or boolean scalar or vector. It
can't be a vector if it is the length of genTypeT.
+ ///
+ /// @code
+ /// #include <glm/glm.hpp>
+ /// ...
+ /// float a;
+ /// bool b;
+ /// glm::dvec3 e;
+ /// glm::dvec3 f;
+ /// glm::vec4 g;
+ /// glm::vec4 h;
+ /// ...
+ /// glm::vec4 r = glm::mix(g, h, a); // Interpolate with a
floating-point scalar two vectors.
+ /// glm::vec4 s = glm::mix(g, h, b); // Returns g or h;
+ /// glm::dvec3 t = glm::mix(e, f, a); // Types of the third parameter
is not required to match with the first and the second.
+ /// glm::vec4 u = glm::mix(g, h, r); // Interpolations can be perform
per component with a vector for the last parameter.
+ /// @endcode
+ template<typename genTypeT, typename genTypeU>
+ GLM_FUNC_DECL genTypeT mix(genTypeT x, genTypeT y, genTypeU a);
+
+ template<length_t L, typename T, typename U, qualifier Q>
+ GLM_FUNC_DECL vec<L, T, Q> mix(vec<L, T, Q> const& x, vec<L, T, Q>
const& y, vec<L, U, Q> const& a);
+
+ template<length_t L, typename T, typename U, qualifier Q>
+ GLM_FUNC_DECL vec<L, T, Q> mix(vec<L, T, Q> const& x, vec<L, T, Q>
const& y, U a);
+
+ /// Returns 0.0 if x < edge, otherwise it returns 1.0 for each
component of a genType.
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/step.xml">GLSL step man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<typename genType>
+ GLM_FUNC_DECL genType step(genType edge, genType x);
+
+ /// Returns 0.0 if x < edge, otherwise it returns 1.0.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the
dimension of the vector
+ /// @tparam T Floating-point scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/step.xml">GLSL step man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<length_t L, typename T, qualifier Q>
+ GLM_FUNC_DECL vec<L, T, Q> step(T edge, vec<L, T, Q> const& x);
+
+ /// Returns 0.0 if x < edge, otherwise it returns 1.0.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the
dimension of the vector
+ /// @tparam T Floating-point scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/step.xml">GLSL step man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<length_t L, typename T, qualifier Q>
+ GLM_FUNC_DECL vec<L, T, Q> step(vec<L, T, Q> const& edge, vec<L, T, Q>
const& x);
+
+ /// Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and
+ /// performs smooth Hermite interpolation between 0 and 1
+ /// when edge0 < x < edge1. This is useful in cases where
+ /// you would want a threshold function with a smooth
+ /// transition. This is equivalent to:
+ /// genType t;
+ /// t = clamp ((x - edge0) / (edge1 - edge0), 0, 1);
+ /// return t * t * (3 - 2 * t);
+ /// Results are undefined if edge0 >= edge1.
+ ///
+ /// @tparam genType Floating-point scalar or vector types.
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/smoothstep.xml">GLSL
smoothstep man page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<typename genType>
+ GLM_FUNC_DECL genType smoothstep(genType edge0, genType edge1, genType
x);
+
+ template<length_t L, typename T, qualifier Q>
+ GLM_FUNC_DECL vec<L, T, Q> smoothstep(T edge0, T edge1, vec<L, T, Q>
const& x);
+
+ template<length_t L, typename T, qualifier Q>
+ GLM_FUNC_DECL vec<L, T, Q> smoothstep(vec<L, T, Q> const& edge0, vec<L,
T, Q> const& edge1, vec<L, T, Q> const& x);
+
+ /// Returns true if x holds a NaN (not a number)
+ /// representation in the underlying implementation's set of
+ /// floating point representations. Returns false otherwise,
+ /// including for implementations with no NaN
+ /// representations.
+ ///
+ /// /!\ When using compiler fast math, this function may fail.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the
dimension of the vector
+ /// @tparam T Floating-point scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/isnan.xml">GLSL isnan man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<length_t L, typename T, qualifier Q>
+ GLM_FUNC_DECL vec<L, bool, Q> isnan(vec<L, T, Q> const& x);
+
+ /// Returns true if x holds a positive infinity or negative
+ /// infinity representation in the underlying implementation's
+ /// set of floating point representations. Returns false
+ /// otherwise, including for implementations with no infinity
+ /// representations.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the
dimension of the vector
+ /// @tparam T Floating-point scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/isinf.xml">GLSL isinf man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<length_t L, typename T, qualifier Q>
+ GLM_FUNC_DECL vec<L, bool, Q> isinf(vec<L, T, Q> const& x);
+
+ /// Returns a signed integer value representing
+ /// the encoding of a floating-point value. The floating-point
+ /// value's bit-level representation is preserved.
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/floatBitsToInt.xml">GLSL
floatBitsToInt man page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ GLM_FUNC_DECL int floatBitsToInt(float const& v);
+
+ /// Returns a signed integer value representing
+ /// the encoding of a floating-point value. The floatingpoint
+ /// value's bit-level representation is preserved.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the
dimension of the vector
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/floatBitsToInt.xml">GLSL
floatBitsToInt man page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<length_t L, qualifier Q>
+ GLM_FUNC_DECL vec<L, int, Q> floatBitsToInt(vec<L, float, Q> const& v);
+
+ /// Returns a unsigned integer value representing
+ /// the encoding of a floating-point value. The floatingpoint
+ /// value's bit-level representation is preserved.
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/floatBitsToUint.xml">GLSL
floatBitsToUint man page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ GLM_FUNC_DECL uint floatBitsToUint(float const& v);
+
+ /// Returns a unsigned integer value representing
+ /// the encoding of a floating-point value. The floatingpoint
+ /// value's bit-level representation is preserved.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the
dimension of the vector
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/floatBitsToUint.xml">GLSL
floatBitsToUint man page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<length_t L, qualifier Q>
+ GLM_FUNC_DECL vec<L, uint, Q> floatBitsToUint(vec<L, float, Q> const&
v);
+
+ /// Returns a floating-point value corresponding to a signed
+ /// integer encoding of a floating-point value.
+ /// If an inf or NaN is passed in, it will not signal, and the
+ /// resulting floating point value is unspecified. Otherwise,
+ /// the bit-level representation is preserved.
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/intBitsToFloat.xml">GLSL
intBitsToFloat man page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ GLM_FUNC_DECL float intBitsToFloat(int const& v);
+
+ /// Returns a floating-point value corresponding to a signed
+ /// integer encoding of a floating-point value.
+ /// If an inf or NaN is passed in, it will not signal, and the
+ /// resulting floating point value is unspecified. Otherwise,
+ /// the bit-level representation is preserved.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the
dimension of the vector
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/intBitsToFloat.xml">GLSL
intBitsToFloat man page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<length_t L, qualifier Q>
+ GLM_FUNC_DECL vec<L, float, Q> intBitsToFloat(vec<L, int, Q> const& v);
+
+ /// Returns a floating-point value corresponding to a
+ /// unsigned integer encoding of a floating-point value.
+ /// If an inf or NaN is passed in, it will not signal, and the
+ /// resulting floating point value is unspecified. Otherwise,
+ /// the bit-level representation is preserved.
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/uintBitsToFloat.xml">GLSL
uintBitsToFloat man page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ GLM_FUNC_DECL float uintBitsToFloat(uint const& v);
+
+ /// Returns a floating-point value corresponding to a
+ /// unsigned integer encoding of a floating-point value.
+ /// If an inf or NaN is passed in, it will not signal, and the
+ /// resulting floating point value is unspecified. Otherwise,
+ /// the bit-level representation is preserved.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the
dimension of the vector
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/uintBitsToFloat.xml">GLSL
uintBitsToFloat man page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<length_t L, qualifier Q>
+ GLM_FUNC_DECL vec<L, float, Q> uintBitsToFloat(vec<L, uint, Q> const&
v);
+
+ /// Computes and returns a * b + c.
+ ///
+ /// @tparam genType Floating-point scalar or vector types.
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/fma.xml">GLSL fma man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<typename genType>
+ GLM_FUNC_DECL genType fma(genType const& a, genType const& b, genType
const& c);
+
+ /// Splits x into a floating-point significand in the range
+ /// [0.5, 1.0) and an integral exponent of two, such that:
+ /// x = significand * exp(2, exponent)
+ ///
+ /// The significand is returned by the function and the
+ /// exponent is returned in the parameter exp. For a
+ /// floating-point value of zero, the significant and exponent
+ /// are both zero. For a floating-point value that is an
+ /// infinity or is not a number, the results are undefined.
+ ///
+ /// @tparam genType Floating-point scalar or vector types.
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/frexp.xml">GLSL frexp man
page</a>
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<typename genType>
+ GLM_FUNC_DECL genType frexp(genType x, int& exp);
+
+ template<length_t L, typename T, qualifier Q>
+ GLM_FUNC_DECL vec<L, T, Q> frexp(vec<L, T, Q> const& v, vec<L, int, Q>&
exp);
+
+ /// Builds a floating-point number from x and the
+ /// corresponding integral exponent of two in exp, returning:
+ /// significand * exp(2, exponent)
+ ///
+ /// If this product is too large to be represented in the
+ /// floating-point type, the result is undefined.
+ ///
+ /// @tparam genType Floating-point scalar or vector types.
+ ///
+ /// @see <a
href="http://www.opengl.org/sdk/docs/manglsl/xhtml/ldexp.xml">GLSL ldexp man
page</a>;
+ /// @see <a
href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8
specification, section 8.3 Common Functions</a>
+ template<typename genType>
+ GLM_FUNC_DECL genType ldexp(genType const& x, int const& exp);
+
+ template<length_t L, typename T, qualifier Q>
+ GLM_FUNC_DECL vec<L, T, Q> ldexp(vec<L, T, Q> const& v, vec<L, int, Q>
const& exp);
+
+ /// @}
+}//namespace glm
+
+#include "detail/func_common.inl"
+
Property changes on: brlcad/trunk/src/qged/display/glm/glm/common.hpp
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: brlcad/trunk/src/qged/display/glm/glm/detail/_features.hpp
===================================================================
--- brlcad/trunk/src/qged/display/glm/glm/detail/_features.hpp
(rev 0)
+++ brlcad/trunk/src/qged/display/glm/glm/detail/_features.hpp 2020-06-29
13:53:57 UTC (rev 76234)
@@ -0,0 +1,394 @@
+#pragma once
+
+// #define GLM_CXX98_EXCEPTIONS
+// #define GLM_CXX98_RTTI
+
+// #define GLM_CXX11_RVALUE_REFERENCES
+// Rvalue references - GCC 4.3
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html
+
+// GLM_CXX11_TRAILING_RETURN
+// Rvalue references for *this - GCC not supported
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm
+
+// GLM_CXX11_NONSTATIC_MEMBER_INIT
+// Initialization of class objects by rvalues - GCC any
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1610.html
+
+// GLM_CXX11_NONSTATIC_MEMBER_INIT
+// Non-static data member initializers - GCC 4.7
+// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2756.htm
+
+// #define GLM_CXX11_VARIADIC_TEMPLATE
+// Variadic templates - GCC 4.3
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf
+
+//
+// Extending variadic template template parameters - GCC 4.4
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf
+
+// #define GLM_CXX11_GENERALIZED_INITIALIZERS
+// Initializer lists - GCC 4.4
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm
+
+// #define GLM_CXX11_STATIC_ASSERT
+// Static assertions - GCC 4.3
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html
+
+// #define GLM_CXX11_AUTO_TYPE
+// auto-typed variables - GCC 4.4
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf
+
+// #define GLM_CXX11_AUTO_TYPE
+// Multi-declarator auto - GCC 4.4
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1737.pdf
+
+// #define GLM_CXX11_AUTO_TYPE
+// Removal of auto as a storage-class specifier - GCC 4.4
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2546.htm
+
+// #define GLM_CXX11_AUTO_TYPE
+// New function declarator syntax - GCC 4.4
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm
+
+// #define GLM_CXX11_LAMBDAS
+// New wording for C++0x lambdas - GCC 4.5
+// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2927.pdf
+
+// #define GLM_CXX11_DECLTYPE
+// Declared type of an expression - GCC 4.3
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf
+
+//
+// Right angle brackets - GCC 4.3
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html
+
+//
+// Default template arguments for function templates DR226 GCC 4.3
+// http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226
+
+//
+// Solving the SFINAE problem for expressions DR339 GCC 4.4
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html
+
+// #define GLM_CXX11_ALIAS_TEMPLATE
+// Template aliases N2258 GCC 4.7
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf
+
+//
+// Extern templates N1987 Yes
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm
+
+// #define GLM_CXX11_NULLPTR
+// Null pointer constant N2431 GCC 4.6
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf
+
+// #define GLM_CXX11_STRONG_ENUMS
+// Strongly-typed enums N2347 GCC 4.4
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf
+
+//
+// Forward declarations for enums N2764 GCC 4.6
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf
+
+//
+// Generalized attributes N2761 GCC 4.8
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf
+
+//
+// Generalized constant expressions N2235 GCC 4.6
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf
+
+//
+// Alignment support N2341 GCC 4.8
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf
+
+// #define GLM_CXX11_DELEGATING_CONSTRUCTORS
+// Delegating constructors N1986 GCC 4.7
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf
+
+//
+// Inheriting constructors N2540 GCC 4.8
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm
+
+// #define GLM_CXX11_EXPLICIT_CONVERSIONS
+// Explicit conversion operators N2437 GCC 4.5
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf
+
+//
+// New character types N2249 GCC 4.4
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html
+
+//
+// Unicode string literals N2442 GCC 4.5
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
+
+//
+// Raw string literals N2442 GCC 4.5
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
+
+//
+// Universal character name literals N2170 GCC 4.5
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2170.html
+
+// #define GLM_CXX11_USER_LITERALS
+// User-defined literals N2765 GCC 4.7
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf
+
+//
+// Standard Layout Types N2342 GCC 4.5
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm
+
+// #define GLM_CXX11_DEFAULTED_FUNCTIONS
+// #define GLM_CXX11_DELETED_FUNCTIONS
+// Defaulted and deleted functions N2346 GCC 4.4
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm
+
+//
+// Extended friend declarations N1791 GCC 4.7
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf
+
+//
+// Extending sizeof N2253 GCC 4.4
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html
+
+// #define GLM_CXX11_INLINE_NAMESPACES
+// Inline namespaces N2535 GCC 4.4
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm
+
+// #define GLM_CXX11_UNRESTRICTED_UNIONS
+// Unrestricted unions N2544 GCC 4.6
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf
+
+// #define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS
+// Local and unnamed types as template arguments N2657 GCC 4.5
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm
+
+// #define GLM_CXX11_RANGE_FOR
+// Range-based for N2930 GCC 4.6
+// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html
+
+// #define GLM_CXX11_OVERRIDE_CONTROL
+// Explicit virtual overrides N2928 N3206 N3272 GCC 4.7
+// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm
+
+//
+// Minimal support for garbage collection and reachability-based leak
detection N2670 No
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htm
+
+// #define GLM_CXX11_NOEXCEPT
+// Allowing move constructors to throw [noexcept] N3050 GCC 4.6 (core
language only)
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html
+
+//
+// Defining move special member functions N3053 GCC 4.6
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.html
+
+//
+// Sequence points N2239 Yes
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html
+
+//
+// Atomic operations N2427 GCC 4.4
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html
+
+//
+// Strong Compare and Exchange N2748 GCC 4.5
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html
+
+//
+// Bidirectional Fences N2752 GCC 4.8
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2752.htm
+
+//
+// Memory model N2429 GCC 4.8
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2429.htm
+
+//
+// Data-dependency ordering: atomics and memory model N2664 GCC 4.4
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm
+
+//
+// Propagating exceptions N2179 GCC 4.4
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html
+
+//
+// Abandoning a process and at_quick_exit N2440 GCC 4.8
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2440.htm
+
+//
+// Allow atomics use in signal handlers N2547 Yes
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2547.htm
+
+//
+// Thread-local storage N2659 GCC 4.8
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm
+
+//
+// Dynamic initialization and destruction with concurrency N2660 GCC 4.3
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm
+
+//
+// __func__ predefined identifier N2340 GCC 4.3
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm
+
+//
+// C99 preprocessor N1653 GCC 4.3
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm
+
+//
+// long long N1811 GCC 4.3
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf
+
+//
+// Extended integral types N1988 Yes
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1988.pdf
+
+#if(GLM_COMPILER & GLM_COMPILER_GCC)
+
+# define GLM_CXX11_STATIC_ASSERT
+
+#elif(GLM_COMPILER & GLM_COMPILER_CLANG)
+# if(__has_feature(cxx_exceptions))
+# define GLM_CXX98_EXCEPTIONS
+# endif
+
+# if(__has_feature(cxx_rtti))
+# define GLM_CXX98_RTTI
+# endif
+
+# if(__has_feature(cxx_access_control_sfinae))
+# define GLM_CXX11_ACCESS_CONTROL_SFINAE
+# endif
+
+# if(__has_feature(cxx_alias_templates))
+# define GLM_CXX11_ALIAS_TEMPLATE
+# endif
+
+# if(__has_feature(cxx_alignas))
+# define GLM_CXX11_ALIGNAS
+# endif
+
+# if(__has_feature(cxx_attributes))
+# define GLM_CXX11_ATTRIBUTES
+# endif
+
+# if(__has_feature(cxx_constexpr))
+# define GLM_CXX11_CONSTEXPR
+# endif
+
+# if(__has_feature(cxx_decltype))
+# define GLM_CXX11_DECLTYPE
+# endif
+
+# if(__has_feature(cxx_default_function_template_args))
+# define GLM_CXX11_DEFAULT_FUNCTION_TEMPLATE_ARGS
+# endif
+
+# if(__has_feature(cxx_defaulted_functions))
+# define GLM_CXX11_DEFAULTED_FUNCTIONS
+# endif
+
+# if(__has_feature(cxx_delegating_constructors))
+# define GLM_CXX11_DELEGATING_CONSTRUCTORS
+# endif
+
+# if(__has_feature(cxx_deleted_functions))
+# define GLM_CXX11_DELETED_FUNCTIONS
+# endif
+
+# if(__has_feature(cxx_explicit_conversions))
+# define GLM_CXX11_EXPLICIT_CONVERSIONS
+# endif
+
+# if(__has_feature(cxx_generalized_initializers))
+# define GLM_CXX11_GENERALIZED_INITIALIZERS
+# endif
+
+# if(__has_feature(cxx_implicit_moves))
+# define GLM_CXX11_IMPLICIT_MOVES
+# endif
+
+# if(__has_feature(cxx_inheriting_constructors))
+# define GLM_CXX11_INHERITING_CONSTRUCTORS
+# endif
+
+# if(__has_feature(cxx_inline_namespaces))
+# define GLM_CXX11_INLINE_NAMESPACES
+# endif
+
+# if(__has_feature(cxx_lambdas))
+# define GLM_CXX11_LAMBDAS
+# endif
+
+# if(__has_feature(cxx_local_type_template_args))
+# define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS
+# endif
+
+# if(__has_feature(cxx_noexcept))
+# define GLM_CXX11_NOEXCEPT
+# endif
+
+# if(__has_feature(cxx_nonstatic_member_init))
+# define GLM_CXX11_NONSTATIC_MEMBER_INIT
+# endif
+
+# if(__has_feature(cxx_nullptr))
+# define GLM_CXX11_NULLPTR
+# endif
+
+# if(__has_feature(cxx_override_control))
+# define GLM_CXX11_OVERRIDE_CONTROL
+# endif
+
+# if(__has_feature(cxx_reference_qualified_functions))
+# define GLM_CXX11_REFERENCE_QUALIFIED_FUNCTIONS
+# endif
+
+# if(__has_feature(cxx_range_for))
+# define GLM_CXX11_RANGE_FOR
+# endif
+
+# if(__has_feature(cxx_raw_string_literals))
+# define GLM_CXX11_RAW_STRING_LITERALS
+# endif
+
+# if(__has_feature(cxx_rvalue_references))
+# define GLM_CXX11_RVALUE_REFERENCES
+# endif
+
+# if(__has_feature(cxx_static_assert))
+# define GLM_CXX11_STATIC_ASSERT
+# endif
+
+# if(__has_feature(cxx_auto_type))
+# define GLM_CXX11_AUTO_TYPE
+# endif
+
+# if(__has_feature(cxx_strong_enums))
+# define GLM_CXX11_STRONG_ENUMS
+# endif
+
+# if(__has_feature(cxx_trailing_return))
+# define GLM_CXX11_TRAILING_RETURN
+# endif
+
+# if(__has_feature(cxx_unicode_literals))
+# define GLM_CXX11_UNICODE_LITERALS
+# endif
+
+# if(__has_feature(cxx_unrestricted_unions))
+# define GLM_CXX11_UNRESTRICTED_UNIONS
+# endif
+
+# if(__has_feature(cxx_user_literals))
+# define GLM_CXX11_USER_LITERALS
+# endif
+
+# if(__has_feature(cxx_variadic_templates))
+# define GLM_CXX11_VARIADIC_TEMPLATES
+# endif
+
+#endif//(GLM_COMPILER & GLM_COMPILER_CLANG)
Property changes on: brlcad/trunk/src/qged/display/glm/glm/detail/_features.hpp
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: brlcad/trunk/src/qged/display/glm/glm/detail/_fixes.hpp
===================================================================
--- brlcad/trunk/src/qged/display/glm/glm/detail/_fixes.hpp
(rev 0)
+++ brlcad/trunk/src/qged/display/glm/glm/detail/_fixes.hpp 2020-06-29
13:53:57 UTC (rev 76234)
@@ -0,0 +1,27 @@
+#include <cmath>
+
+//! Workaround for compatibility with other libraries
+#ifdef max
+#undef max
+#endif
+
+//! Workaround for compatibility with other libraries
+#ifdef min
+#undef min
+#endif
+
+//! Workaround for Android
+#ifdef isnan
+#undef isnan
+#endif
+
+//! Workaround for Android
+#ifdef isinf
+#undef isinf
+#endif
+
+//! Workaround for Chrone Native Client
+#ifdef log2
+#undef log2
+#endif
+
Property changes on: brlcad/trunk/src/qged/display/glm/glm/detail/_fixes.hpp
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: brlcad/trunk/src/qged/display/glm/glm/detail/_noise.hpp
===================================================================
--- brlcad/trunk/src/qged/display/glm/glm/detail/_noise.hpp
(rev 0)
+++ brlcad/trunk/src/qged/display/glm/glm/detail/_noise.hpp 2020-06-29
13:53:57 UTC (rev 76234)
@@ -0,0 +1,81 @@
+#pragma once
+
+#include "../common.hpp"
+
+namespace glm{
+namespace detail
+{
+ template<typename T>
+ GLM_FUNC_QUALIFIER T mod289(T const& x)
+ {
+ return x - floor(x * (static_cast<T>(1.0) /
static_cast<T>(289.0))) * static_cast<T>(289.0);
+ }
+
+ template<typename T>
+ GLM_FUNC_QUALIFIER T permute(T const& x)
+ {
+ return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) *
x);
+ }
+
+ template<typename T, qualifier Q>
+ GLM_FUNC_QUALIFIER vec<2, T, Q> permute(vec<2, T, Q> const& x)
+ {
+ return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) *
x);
+ }
+
+ template<typename T, qualifier Q>
+ GLM_FUNC_QUALIFIER vec<3, T, Q> permute(vec<3, T, Q> const& x)
+ {
+ return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) *
x);
+ }
+
+ template<typename T, qualifier Q>
+ GLM_FUNC_QUALIFIER vec<4, T, Q> permute(vec<4, T, Q> const& x)
+ {
+ return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) *
x);
+ }
+
+ template<typename T>
+ GLM_FUNC_QUALIFIER T taylorInvSqrt(T const& r)
+ {
+ return static_cast<T>(1.79284291400159) -
static_cast<T>(0.85373472095314) * r;
+ }
+
+ template<typename T, qualifier Q>
+ GLM_FUNC_QUALIFIER vec<2, T, Q> taylorInvSqrt(vec<2, T, Q> const& r)
+ {
+ return static_cast<T>(1.79284291400159) -
static_cast<T>(0.85373472095314) * r;
+ }
+
+ template<typename T, qualifier Q>
+ GLM_FUNC_QUALIFIER vec<3, T, Q> taylorInvSqrt(vec<3, T, Q> const& r)
+ {
+ return static_cast<T>(1.79284291400159) -
static_cast<T>(0.85373472095314) * r;
+ }
+
+ template<typename T, qualifier Q>
+ GLM_FUNC_QUALIFIER vec<4, T, Q> taylorInvSqrt(vec<4, T, Q> const& r)
+ {
+ return static_cast<T>(1.79284291400159) -
static_cast<T>(0.85373472095314) * r;
+ }
+
+ template<typename T, qualifier Q>
+ GLM_FUNC_QUALIFIER vec<2, T, Q> fade(vec<2, T, Q> const& t)
+ {
+ return (t * t * t) * (t * (t * static_cast<T>(6) -
static_cast<T>(15)) + static_cast<T>(10));
+ }
+
@@ Diff output truncated at 100000 characters. @@
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits