21template<
size_t I,
typename T>
24template<
size_t I,
typename T>
27template<
size_t I,
typename T>
30template<
size_t I,
typename T>
33template<
size_t I,
typename T>
36template<
size_t I,
typename T>
40struct tuple_element<0,
MR::AffineXf<V>> {
using type =
typename V::MatrixType; };
43struct tuple_element<1,
MR::AffineXf<V>> {
using type = V; };
46struct tuple_element<0,
MR::
Id<T>> {
using type = int; };
49struct tuple_element<I,
MR::Color> {
using type = uint8_t; };
52struct tuple_size<
MR::
Vector2<T>> : integral_constant<size_t, MR::Vector2<T>::elements> {};
55struct tuple_size<
MR::
Vector3<T>> : integral_constant<size_t, MR::Vector3<T>::elements> {};
58struct tuple_size<
MR::Vector4<T>> : integral_constant<size_t, MR::Vector4<T>::elements> {};
61struct tuple_size<
MR::Matrix2<T>> : integral_constant<size_t, MR::Matrix2<T>::VectorType::elements> {};
64struct tuple_size<
MR::Matrix3<T>> : integral_constant<size_t, MR::Matrix3<T>::VectorType::elements> {};
67struct tuple_size<
MR::Matrix4<T>> : integral_constant<size_t, MR::Matrix4<T>::VectorType::elements> {};
70struct tuple_size<
MR::AffineXf<V>> : integral_constant<size_t, 2> {};
73struct tuple_size<
MR::
Id<T>> : integral_constant<size_t, 1> {};
76struct tuple_size<
MR::Color> : integral_constant<size_t, 4> {};
82template<
size_t I,
typename T>
83constexpr const T&
get(
const Vector2<T>& v )
noexcept {
return v[int( I )]; }
85template<
size_t I,
typename T>
88template<
size_t I,
typename T>
89constexpr const T&
get(
const Vector3<T>& v )
noexcept {
return v[int( I )]; }
91template<
size_t I,
typename T>
94template<
size_t I,
typename T>
95constexpr const T&
get(
const Vector4<T>& v )
noexcept {
return v[int( I )]; }
97template<
size_t I,
typename T>
100template<
size_t I,
typename T>
103template<
size_t I,
typename T>
106template<
size_t I,
typename T>
109template<
size_t I,
typename T>
112template<
size_t I,
typename T>
115template<
size_t I,
typename T>
118template<
size_t I,
typename V>
119constexpr const typename std::tuple_element<I, AffineXf<V>>::type&
get(
const AffineXf<V>& m )
noexcept
121 if constexpr ( I == 0 )
127template<
size_t I,
typename V>
128constexpr typename std::tuple_element<I, AffineXf<V>>::type&
get(
AffineXf<V>& m )
noexcept
130 if constexpr ( I == 0 )
136template <
size_t I,
typename T>
139 static_assert( I == 0 );
143template <
size_t I,
typename T>
146 static_assert( I == 0 );
151constexpr const uint8_t&
get(
const Color& c )
noexcept
153 static_assert( I < 4 );
160 static_assert( I < 4 );
Definition MRCameraOrientationPlugin.h:7
struct MRMESH_CLASS Vector3
Definition MRMeshFwd.h:122
struct MRMESH_CLASS Vector2
Definition MRMeshFwd.h:115
class MRMESH_CLASS Id
Definition MRMeshFwd.h:62
constexpr const T & get(const Vector2< T > &v) noexcept
Definition MRTupleBindings.h:83
Definition MRMeshFwd.h:178
Definition MRMeshFwd.h:136
Definition MRMeshFwd.h:143
Definition MRMeshFwd.h:150
Definition MRVector2.h:17
T ValueType
Definition MRVector2.h:18
Definition MRVector3.h:15
T ValueType
Definition MRVector3.h:16
Definition MRVector4.h:13
T ValueType
Definition MRVector4.h:14