Blender V4.3
blender::VecBase< T, Size > Struct Template Reference

#include <BLI_math_vector_types.hh>

Inherits blender::vec_struct_base< T, Size >.

Inherited by blender::draw::StorageBuffer< blender::VecBase, true >.

Public Types

using base_type = T
 
using uint_type = VecBase<as_uint_type<T>, Size>
 

Public Member Functions

 BLI_STATIC_ASSERT (alignof(T)<=sizeof(T), "VecBase is not compatible with aligned type for now.")
 
 VecBase ()=default
 
template<BLI_ENABLE_IF_VEC(Size, > 1) >
 VecBase (T value)
 
template<typename U , BLI_ENABLE_IF((std::is_convertible_v< U, T >)) >
 VecBase (U value)
 
template<BLI_ENABLE_IF_VEC(Size,==1) >
 VecBase (T _x)
 
template<BLI_ENABLE_IF_VEC(Size,==2) >
 VecBase (T _x, T _y)
 
template<BLI_ENABLE_IF_VEC(Size,==3) >
 VecBase (T _x, T _y, T _z)
 
template<BLI_ENABLE_IF_VEC(Size,==4) >
 VecBase (T _x, T _y, T _z, T _w)
 
template<typename U , BLI_ENABLE_IF_VEC(Size,==3) >
constexpr VecBase (const VecBase< U, 2 > &xy, T z)
 
template<typename U , BLI_ENABLE_IF_VEC(Size,==3) >
constexpr VecBase (T x, const VecBase< U, 2 > &yz)
 
template<typename U , BLI_ENABLE_IF_VEC(Size,==4) >
 VecBase (VecBase< U, 3 > xyz, T w)
 
template<typename U , BLI_ENABLE_IF_VEC(Size,==4) >
 VecBase (T x, VecBase< U, 3 > yzw)
 
template<typename U , typename V , BLI_ENABLE_IF_VEC(Size,==4) >
 VecBase (VecBase< U, 2 > xy, VecBase< V, 2 > zw)
 
template<typename U , BLI_ENABLE_IF_VEC(Size,==4) >
 VecBase (VecBase< U, 2 > xy, T z, T w)
 
template<typename U , BLI_ENABLE_IF_VEC(Size,==4) >
 VecBase (T x, VecBase< U, 2 > yz, T w)
 
template<typename U , BLI_ENABLE_IF_VEC(Size,==4) >
 VecBase (T x, T y, VecBase< U, 2 > zw)
 
template<typename U , int OtherSize, BLI_ENABLE_IF(OtherSize > Size) >
 VecBase (const VecBase< U, OtherSize > &other)
 
template<BLI_ENABLE_IF_VEC(Size, >=2) >
VecBase< T, 2 > xy () const
 
template<BLI_ENABLE_IF_VEC(Size, >=3) >
VecBase< T, 2 > yz () const
 
template<BLI_ENABLE_IF_VEC(Size, >=4) >
VecBase< T, 2 > zw () const
 
template<BLI_ENABLE_IF_VEC(Size, >=3) >
VecBase< T, 3 > xyz () const
 
template<BLI_ENABLE_IF_VEC(Size, >=4) >
VecBase< T, 3 > yzw () const
 
template<BLI_ENABLE_IF_VEC(Size, >=4) >
VecBase< T, 4 > xyzw () const
 
 VecBase (const T *ptr)
 
template<typename U , BLI_ENABLE_IF((std::is_convertible_v< U, T >)) >
 VecBase (const U *ptr)
 
 VecBase (const T(*ptr)[Size])
 
template<typename U >
 VecBase (const VecBase< U, Size > &vec)
 
 operator const T * () const
 
 operator T* ()
 
const Toperator[] (int index) const
 
Toperator[] (int index)
 
VecBaseoperator+= (const VecBase &b)
 
VecBaseoperator+= (const T &b)
 
VecBaseoperator-= (const VecBase &b)
 
VecBaseoperator-= (const T &b)
 
VecBaseoperator*= (T b)
 
VecBaseoperator*= (const VecBase &b)
 
VecBaseoperator/= (T b)
 
VecBaseoperator/= (const VecBase &b)
 
 BLI_INT_OP (T) friend VecBase operator&(const VecBase &a
 
 BLI_INT_OP (T) friend VecBase operator&(const VecBase &a
 
 BLI_INT_OP (T) friend VecBase operator&(T a
 

Public Attributes

const VecBaseb
 
T b
 
- Public Attributes inherited from blender::vec_struct_base< T, Size >
std::array< T, Size > values
 

Static Public Attributes

static constexpr int type_length = Size
 

Friends

VecBase operator+ (const VecBase &a, const VecBase &b)
 
VecBase operator+ (const VecBase &a, const T &b)
 
VecBase operator+ (const T &a, const VecBase &b)
 
VecBase operator- (const VecBase &a)
 
VecBase operator- (const VecBase &a, const VecBase &b)
 
VecBase operator- (const VecBase &a, const T &b)
 
VecBase operator- (const T &a, const VecBase &b)
 
VecBase operator* (const VecBase &a, const VecBase &b)
 
template<typename FactorT >
VecBase operator* (const VecBase &a, FactorT b)
 
VecBase operator* (T a, const VecBase &b)
 
VecBase operator/ (const VecBase &a, const VecBase &b)
 
VecBase operator/ (const VecBase &a, T b)
 
VecBase operator/ (T a, const VecBase &b)
 

Detailed Description

template<typename T, int Size>
struct blender::VecBase< T, Size >

Definition at line 68 of file BLI_math_vector_types.hh.

Member Typedef Documentation

◆ base_type

template<typename T , int Size>
using blender::VecBase< T, Size >::base_type = T

Definition at line 78 of file BLI_math_vector_types.hh.

◆ uint_type

template<typename T , int Size>
using blender::VecBase< T, Size >::uint_type = VecBase<as_uint_type<T>, Size>

Definition at line 79 of file BLI_math_vector_types.hh.

Constructor & Destructor Documentation

◆ VecBase() [1/20]

template<typename T , int Size>
blender::VecBase< T, Size >::VecBase ( )
default

◆ VecBase() [2/20]

template<typename T , int Size>
template<BLI_ENABLE_IF_VEC(Size, > 1) >
blender::VecBase< T, Size >::VecBase ( T value)
inlineexplicit

Definition at line 83 of file BLI_math_vector_types.hh.

◆ VecBase() [3/20]

template<typename T , int Size>
template<typename U , BLI_ENABLE_IF((std::is_convertible_v< U, T >)) >
blender::VecBase< T, Size >::VecBase ( U value)
inlineexplicit

Definition at line 91 of file BLI_math_vector_types.hh.

◆ VecBase() [4/20]

template<typename T , int Size>
template<BLI_ENABLE_IF_VEC(Size,==1) >
blender::VecBase< T, Size >::VecBase ( T _x)
inline

Definition at line 95 of file BLI_math_vector_types.hh.

◆ VecBase() [5/20]

template<typename T , int Size>
template<BLI_ENABLE_IF_VEC(Size,==2) >
blender::VecBase< T, Size >::VecBase ( T _x,
T _y )
inline

Definition at line 100 of file BLI_math_vector_types.hh.

◆ VecBase() [6/20]

template<typename T , int Size>
template<BLI_ENABLE_IF_VEC(Size,==3) >
blender::VecBase< T, Size >::VecBase ( T _x,
T _y,
T _z )
inline

Definition at line 106 of file BLI_math_vector_types.hh.

References z().

◆ VecBase() [7/20]

template<typename T , int Size>
template<BLI_ENABLE_IF_VEC(Size,==4) >
blender::VecBase< T, Size >::VecBase ( T _x,
T _y,
T _z,
T _w )
inline

Definition at line 113 of file BLI_math_vector_types.hh.

References w(), and z().

◆ VecBase() [8/20]

template<typename T , int Size>
template<typename U , BLI_ENABLE_IF_VEC(Size,==3) >
blender::VecBase< T, Size >::VecBase ( const VecBase< U, 2 > & xy,
T z )
inlineconstexpr

Mixed scalar-vector constructors.

Definition at line 124 of file BLI_math_vector_types.hh.

◆ VecBase() [9/20]

template<typename T , int Size>
template<typename U , BLI_ENABLE_IF_VEC(Size,==3) >
blender::VecBase< T, Size >::VecBase ( T x,
const VecBase< U, 2 > & yz )
inlineconstexpr

Definition at line 129 of file BLI_math_vector_types.hh.

◆ VecBase() [10/20]

template<typename T , int Size>
template<typename U , BLI_ENABLE_IF_VEC(Size,==4) >
blender::VecBase< T, Size >::VecBase ( VecBase< U, 3 > xyz,
T w )
inline

Definition at line 134 of file BLI_math_vector_types.hh.

◆ VecBase() [11/20]

template<typename T , int Size>
template<typename U , BLI_ENABLE_IF_VEC(Size,==4) >
blender::VecBase< T, Size >::VecBase ( T x,
VecBase< U, 3 > yzw )
inline

Definition at line 139 of file BLI_math_vector_types.hh.

◆ VecBase() [12/20]

template<typename T , int Size>
template<typename U , typename V , BLI_ENABLE_IF_VEC(Size,==4) >
blender::VecBase< T, Size >::VecBase ( VecBase< U, 2 > xy,
VecBase< V, 2 > zw )
inline

Definition at line 144 of file BLI_math_vector_types.hh.

◆ VecBase() [13/20]

template<typename T , int Size>
template<typename U , BLI_ENABLE_IF_VEC(Size,==4) >
blender::VecBase< T, Size >::VecBase ( VecBase< U, 2 > xy,
T z,
T w )
inline

Definition at line 149 of file BLI_math_vector_types.hh.

◆ VecBase() [14/20]

template<typename T , int Size>
template<typename U , BLI_ENABLE_IF_VEC(Size,==4) >
blender::VecBase< T, Size >::VecBase ( T x,
VecBase< U, 2 > yz,
T w )
inline

Definition at line 154 of file BLI_math_vector_types.hh.

◆ VecBase() [15/20]

template<typename T , int Size>
template<typename U , BLI_ENABLE_IF_VEC(Size,==4) >
blender::VecBase< T, Size >::VecBase ( T x,
T y,
VecBase< U, 2 > zw )
inline

Definition at line 159 of file BLI_math_vector_types.hh.

◆ VecBase() [16/20]

template<typename T , int Size>
template<typename U , int OtherSize, BLI_ENABLE_IF(OtherSize > Size) >
blender::VecBase< T, Size >::VecBase ( const VecBase< U, OtherSize > & other)
inlineexplicit

Masking.

Definition at line 166 of file BLI_math_vector_types.hh.

References T.

◆ VecBase() [17/20]

template<typename T , int Size>
blender::VecBase< T, Size >::VecBase ( const T * ptr)
inline

Conversion from pointers (from C-style vectors).

Definition at line 217 of file BLI_math_vector_types.hh.

References BLI_UNROLL_MATH_VEC_OP_INIT_INDEX, and ptr.

◆ VecBase() [18/20]

template<typename T , int Size>
template<typename U , BLI_ENABLE_IF((std::is_convertible_v< U, T >)) >
blender::VecBase< T, Size >::VecBase ( const U * ptr)
inlineexplicit

Definition at line 222 of file BLI_math_vector_types.hh.

References BLI_UNROLL_MATH_VEC_OP_INIT_INDEX, and ptr.

◆ VecBase() [19/20]

template<typename T , int Size>
blender::VecBase< T, Size >::VecBase ( const T(*) ptr[Size])
inline

Definition at line 227 of file BLI_math_vector_types.hh.

◆ VecBase() [20/20]

template<typename T , int Size>
template<typename U >
blender::VecBase< T, Size >::VecBase ( const VecBase< U, Size > & vec)
inlineexplicit

Conversion from other vector types.

Definition at line 235 of file BLI_math_vector_types.hh.

References BLI_UNROLL_MATH_VEC_OP_INIT_VECTOR.

Member Function Documentation

◆ BLI_INT_OP() [1/3]

template<typename T , int Size>
blender::VecBase< T, Size >::BLI_INT_OP ( T ) const &

Binary operators.

◆ BLI_INT_OP() [2/3]

template<typename T , int Size>
blender::VecBase< T, Size >::BLI_INT_OP ( T ) const &

◆ BLI_INT_OP() [3/3]

template<typename T , int Size>
blender::VecBase< T, Size >::BLI_INT_OP ( T ) &

◆ BLI_STATIC_ASSERT()

template<typename T , int Size>
blender::VecBase< T, Size >::BLI_STATIC_ASSERT ( alignof(T)<=sizeof(T) ,
"VecBase< T, Size > is not compatible with aligned type for now."  )

◆ operator const T *()

template<typename T , int Size>
blender::VecBase< T, Size >::operator const T * ( ) const
inline

C-style pointer dereference.

Definition at line 242 of file BLI_math_vector_types.hh.

◆ operator T*()

template<typename T , int Size>
blender::VecBase< T, Size >::operator T* ( )
inline

Definition at line 247 of file BLI_math_vector_types.hh.

◆ operator*=() [1/2]

template<typename T , int Size>
VecBase & blender::VecBase< T, Size >::operator*= ( const VecBase< T, Size > & b)
inline

◆ operator*=() [2/2]

template<typename T , int Size>
VecBase & blender::VecBase< T, Size >::operator*= ( T b)
inline

◆ operator+=() [1/2]

template<typename T , int Size>
VecBase & blender::VecBase< T, Size >::operator+= ( const T & b)
inline

◆ operator+=() [2/2]

template<typename T , int Size>
VecBase & blender::VecBase< T, Size >::operator+= ( const VecBase< T, Size > & b)
inline

◆ operator-=() [1/2]

template<typename T , int Size>
VecBase & blender::VecBase< T, Size >::operator-= ( const T & b)
inline

◆ operator-=() [2/2]

template<typename T , int Size>
VecBase & blender::VecBase< T, Size >::operator-= ( const VecBase< T, Size > & b)
inline

◆ operator/=() [1/2]

template<typename T , int Size>
VecBase & blender::VecBase< T, Size >::operator/= ( const VecBase< T, Size > & b)
inline

◆ operator/=() [2/2]

template<typename T , int Size>
VecBase & blender::VecBase< T, Size >::operator/= ( T b)
inline

◆ operator[]() [1/2]

template<typename T , int Size>
T & blender::VecBase< T, Size >::operator[] ( int index)
inline

Definition at line 261 of file BLI_math_vector_types.hh.

References BLI_assert.

◆ operator[]() [2/2]

template<typename T , int Size>
const T & blender::VecBase< T, Size >::operator[] ( int index) const
inline

Array access.

Definition at line 254 of file BLI_math_vector_types.hh.

References BLI_assert.

◆ xy()

template<typename T , int Size>
template<BLI_ENABLE_IF_VEC(Size, >=2) >
VecBase< T, 2 > blender::VecBase< T, Size >::xy ( ) const
inline

Swizzling.

Definition at line 175 of file BLI_math_vector_types.hh.

Referenced by blender::nodes::node_composite_cornerpin_cc::CornerPinOperation::compute_homography_matrix(), blender::compositor::dilate_max_velocity(), blender::draw::overlay::MeshUVs::end_sync(), blender::compositor::gather_sample(), blender::ed::greasepencil::generate_arc_from_point_to_point(), blender::ed::sculpt_paint::grease_pencil_fill_extension_cut(), blender::ed::sculpt_paint::grease_pencil_fill_extension_lines_from_circles(), blender::imbuf::transform::TransformContext::init(), blender::ed::sculpt_paint::min_distance_edit::min_distance_edit_invoke(), blender::ed::sculpt_paint::min_distance_edit::min_distance_edit_modal(), nla_transform_apply(), blender::draw::overlay::Cameras::object_sync(), EdgeSlideData::project(), VertSlideData::project(), blender::eevee::IrradianceBake::raylists_build(), blender::compositor::SMAABlendingWeightCalculationPS(), blender::compositor::SMAABlendingWeightCalculationVS(), blender::compositor::SMAACalculateDiagWeights(), blender::compositor::SMAADetectHorizontalCornerPattern(), blender::compositor::SMAADetectVerticalCornerPattern(), blender::compositor::SMAAEdgeDetectionVS(), blender::compositor::SMAALumaEdgeDetectionPS(), blender::compositor::SMAANeighborhoodBlendingPS(), blender::compositor::SMAASearchDiag1(), blender::compositor::SMAASearchDiag2(), blender::eevee::Camera::sync(), blender::tests::TEST(), VertSlideData::update_active_edges(), blender::draw::image_engine::OneTexture::update_bounds(), blender::draw::image_engine::ScreenTileTextures< Divisions >::update_bounds(), and blender::eevee::VolumeObjectBounds::VolumeObjectBounds().

◆ xyz()

◆ xyzw()

template<typename T , int Size>
template<BLI_ENABLE_IF_VEC(Size, >=4) >
VecBase< T, 4 > blender::VecBase< T, Size >::xyzw ( ) const
inline

Definition at line 200 of file BLI_math_vector_types.hh.

Referenced by blender::tests::TEST().

◆ yz()

template<typename T , int Size>
template<BLI_ENABLE_IF_VEC(Size, >=3) >
VecBase< T, 2 > blender::VecBase< T, Size >::yz ( ) const
inline

Definition at line 180 of file BLI_math_vector_types.hh.

Referenced by blender::tests::TEST().

◆ yzw()

template<typename T , int Size>
template<BLI_ENABLE_IF_VEC(Size, >=4) >
VecBase< T, 3 > blender::VecBase< T, Size >::yzw ( ) const
inline

◆ zw()

Friends And Related Symbol Documentation

◆ operator* [1/3]

template<typename T , int Size>
VecBase operator* ( const VecBase< T, Size > & a,
const VecBase< T, Size > & b )
friend

Definition at line 329 of file BLI_math_vector_types.hh.

◆ operator* [2/3]

template<typename T , int Size>
template<typename FactorT >
VecBase operator* ( const VecBase< T, Size > & a,
FactorT b )
friend

Definition at line 334 of file BLI_math_vector_types.hh.

◆ operator* [3/3]

template<typename T , int Size>
VecBase operator* ( T a,
const VecBase< T, Size > & b )
friend

Definition at line 339 of file BLI_math_vector_types.hh.

◆ operator+ [1/3]

template<typename T , int Size>
VecBase operator+ ( const T & a,
const VecBase< T, Size > & b )
friend

Definition at line 284 of file BLI_math_vector_types.hh.

◆ operator+ [2/3]

template<typename T , int Size>
VecBase operator+ ( const VecBase< T, Size > & a,
const T & b )
friend

Definition at line 279 of file BLI_math_vector_types.hh.

◆ operator+ [3/3]

template<typename T , int Size>
VecBase operator+ ( const VecBase< T, Size > & a,
const VecBase< T, Size > & b )
friend

Arithmetic operators.

Definition at line 274 of file BLI_math_vector_types.hh.

◆ operator- [1/4]

template<typename T , int Size>
VecBase operator- ( const T & a,
const VecBase< T, Size > & b )
friend

Definition at line 314 of file BLI_math_vector_types.hh.

◆ operator- [2/4]

template<typename T , int Size>
VecBase operator- ( const VecBase< T, Size > & a)
friend

Definition at line 299 of file BLI_math_vector_types.hh.

◆ operator- [3/4]

template<typename T , int Size>
VecBase operator- ( const VecBase< T, Size > & a,
const T & b )
friend

Definition at line 309 of file BLI_math_vector_types.hh.

◆ operator- [4/4]

template<typename T , int Size>
VecBase operator- ( const VecBase< T, Size > & a,
const VecBase< T, Size > & b )
friend

Definition at line 304 of file BLI_math_vector_types.hh.

◆ operator/ [1/3]

template<typename T , int Size>
VecBase operator/ ( const VecBase< T, Size > & a,
const VecBase< T, Size > & b )
friend

Definition at line 354 of file BLI_math_vector_types.hh.

◆ operator/ [2/3]

template<typename T , int Size>
VecBase operator/ ( const VecBase< T, Size > & a,
T b )
friend

Definition at line 362 of file BLI_math_vector_types.hh.

◆ operator/ [3/3]

template<typename T , int Size>
VecBase operator/ ( T a,
const VecBase< T, Size > & b )
friend

Definition at line 368 of file BLI_math_vector_types.hh.

Member Data Documentation

◆ b [1/2]

◆ b [2/2]

template<typename T , int Size>
T blender::VecBase< T, Size >::b
Initial value:
{
#define BLI_UNROLL_MATH_VEC_OP_VEC_SCALAR(op, a, b)

Definition at line 397 of file BLI_math_vector_types.hh.

◆ type_length

template<typename T , int Size>
int blender::VecBase< T, Size >::type_length = Size
staticconstexpr

Definition at line 76 of file BLI_math_vector_types.hh.


The documentation for this struct was generated from the following file: