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
brlcad-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to