From 957493e2e251d804813b07395257d9597e044eb0 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Sun, 8 Nov 2020 16:15:30 +0300 Subject: [PATCH] Add template deduction guides for transformation classes --- libs/geom/include/psemek/geom/orthographic.hpp | 3 +++ libs/geom/include/psemek/geom/perspective.hpp | 6 ++++++ libs/geom/include/psemek/geom/rotation.hpp | 3 +++ libs/geom/include/psemek/geom/scale.hpp | 3 +++ libs/geom/include/psemek/geom/translation.hpp | 3 +++ 5 files changed, 18 insertions(+) diff --git a/libs/geom/include/psemek/geom/orthographic.hpp b/libs/geom/include/psemek/geom/orthographic.hpp index d508efcb..c9d0ecf9 100644 --- a/libs/geom/include/psemek/geom/orthographic.hpp +++ b/libs/geom/include/psemek/geom/orthographic.hpp @@ -34,6 +34,9 @@ namespace psemek::geom box_type r_; }; + template + orthographic(box) -> orthographic; + template orthographic::orthographic() { diff --git a/libs/geom/include/psemek/geom/perspective.hpp b/libs/geom/include/psemek/geom/perspective.hpp index b1626de0..76e51a7f 100644 --- a/libs/geom/include/psemek/geom/perspective.hpp +++ b/libs/geom/include/psemek/geom/perspective.hpp @@ -26,6 +26,12 @@ namespace psemek::geom homogeneous_matrix_type homogeneous_matrix_; }; + template + perspective(T, T, T, T) -> perspective; + + template + perspective(T, T, T, T, T, T) -> perspective; + template perspective::perspective(scalar_type fov_x, scalar_type fov_y, scalar_type near, scalar_type far) : homogeneous_matrix_(homogeneous_matrix_type::zero()) diff --git a/libs/geom/include/psemek/geom/rotation.hpp b/libs/geom/include/psemek/geom/rotation.hpp index cae065e6..01f24dd1 100644 --- a/libs/geom/include/psemek/geom/rotation.hpp +++ b/libs/geom/include/psemek/geom/rotation.hpp @@ -59,6 +59,9 @@ namespace psemek::geom void fill_matrix(Matrix & m) const; }; + template + axis_rotation(vector, T) -> axis_rotation; + template plane_rotation::plane_rotation() : i{0} diff --git a/libs/geom/include/psemek/geom/scale.hpp b/libs/geom/include/psemek/geom/scale.hpp index 5090307f..e4a61c54 100644 --- a/libs/geom/include/psemek/geom/scale.hpp +++ b/libs/geom/include/psemek/geom/scale.hpp @@ -30,6 +30,9 @@ namespace psemek::geom void fill_matrix(Matrix & m) const; }; + template + scale(vector) -> scale; + template scale::scale() { diff --git a/libs/geom/include/psemek/geom/translation.hpp b/libs/geom/include/psemek/geom/translation.hpp index 9a3b0c0e..525f328b 100644 --- a/libs/geom/include/psemek/geom/translation.hpp +++ b/libs/geom/include/psemek/geom/translation.hpp @@ -25,6 +25,9 @@ namespace psemek::geom point operator()(point const & p) const; }; + template + translation(vector) -> translation; + template translation::translation() : v{vector::zero()}