Blender V4.5
blender::bke::curves Namespace Reference

Namespaces

namespace  nurbs
namespace  poly
namespace  bezier
namespace  catmull_rom

Classes

struct  CurveSegment
struct  CurvePoint
class  IndexRangeCyclic
class  CurvesVertexGroupsAttributeProvider

Functions

const AttributeAccessorFunctionsget_attribute_accessor_functions ()
static void tag_component_topology_changed (void *owner)
static void tag_component_curve_types_changed (void *owner)
static void tag_component_positions_changed (void *owner)
static void tag_component_radii_changed (void *owner)
static void tag_component_normals_changed (void *owner)
static void tag_component_material_index_changed (void *owner)
static GeometryAttributeProviders create_attribute_providers_for_curve ()
static AttributeAccessorFunctions get_curves_accessor_functions ()
static void if_has_data_call_callback (const Span< int > offset_data, const int begin, const int end, UnselectedCallback callback)
template<typename Fn>
static void foreach_selected_point_ranges_per_curve_ (const IndexMask &mask, const OffsetIndices< int > points_by_curve, SelectedCallback selected_fn, Fn unselected_fn)
Inline Curve Methods
int segments_num (const int points_num, const bool cyclic)
float2float2 encode_surface_bary_coord (const float3float3 &v)
float3float3 decode_surface_bary_coord (const float2float2 &v)
IndexRange per_curve_point_offsets_range (const IndexRange points, const int curve_index)

Utility Functions

using SelectedCallback
using UnselectedCallback = FunctionRef<void(IndexRange curves, IndexRange unselected_points)>
IndexMask curve_to_point_selection (OffsetIndices< int > points_by_curve, const IndexMask &curve_selection, IndexMaskMemory &memory)
void fill_points (OffsetIndices< int > points_by_curve, const IndexMask &curve_selection, GPointer value, GMutableSpan dst)
template<typename T>
void fill_points (const OffsetIndices< int > points_by_curve, const IndexMask &curve_selection, const T &value, MutableSpan< T > dst)
bke::CurvesGeometry copy_only_curve_domain (const bke::CurvesGeometry &src_curves)
IndexMask indices_for_type (const VArray< int8_t > &types, const std::array< int, CURVE_TYPES_NUM > &type_counts, const CurveType type, const IndexMask &selection, IndexMaskMemory &memory)
void foreach_curve_by_type (const VArray< int8_t > &types, const std::array< int, CURVE_TYPES_NUM > &type_counts, const IndexMask &selection, FunctionRef< void(IndexMask)> catmull_rom_fn, FunctionRef< void(IndexMask)> poly_fn, FunctionRef< void(IndexMask)> bezier_fn, FunctionRef< void(IndexMask)> nurbs_fn)
void foreach_selected_point_ranges_per_curve (const IndexMask &mask, const OffsetIndices< int > points_by_curve, SelectedCallback selected_fn)
void foreach_selected_point_ranges_per_curve (const IndexMask &mask, const OffsetIndices< int > points_by_curve, SelectedCallback selected_fn, UnselectedCallback unselected_fn)

Typedef Documentation

◆ SelectedCallback

Initial value:

Definition at line 511 of file BKE_curves_utils.hh.

◆ UnselectedCallback

Definition at line 513 of file BKE_curves_utils.hh.

Function Documentation

◆ copy_only_curve_domain()

CurvesGeometry blender::bke::curves::copy_only_curve_domain ( const bke::CurvesGeometry & src_curves)

◆ create_attribute_providers_for_curve()

◆ curve_to_point_selection()

◆ decode_surface_bary_coord()

float3float3 blender::bke::curves::decode_surface_bary_coord ( const float2float2 & v)
inline

Definition at line 572 of file BKE_curves.hh.

References v.

◆ encode_surface_bary_coord()

float2float2 blender::bke::curves::encode_surface_bary_coord ( const float3float3 & v)
inline

Definition at line 566 of file BKE_curves.hh.

References BLI_assert, and v.

◆ fill_points() [1/2]

template<typename T>
void blender::bke::curves::fill_points ( const OffsetIndices< int > points_by_curve,
const IndexMask & curve_selection,
const T & value,
MutableSpan< T > dst )

Definition at line 478 of file BKE_curves_utils.hh.

References fill_points(), and T.

◆ fill_points() [2/2]

◆ foreach_curve_by_type()

◆ foreach_selected_point_ranges_per_curve() [1/2]

void blender::bke::curves::foreach_selected_point_ranges_per_curve ( const IndexMask & mask,
const OffsetIndices< int > points_by_curve,
SelectedCallback selected_fn )

Calls callback function for each curve having selected points.

Parameters
maskselected points.
points_by_curveThe offsets of every curve into arrays on the points domain.
selected_fncallback function called for each curve with at least one point selected.

Definition at line 147 of file curves_utils.cc.

References foreach_selected_point_ranges_per_curve_(), and mask().

Referenced by blender::ed::curves::calc_curves_extrusion(), blender::bke::copy_point_selection_custom_knots(), blender::ed::curves::duplicate_points(), blender::ed::curves::separate_points(), and blender::ed::curves::split_points().

◆ foreach_selected_point_ranges_per_curve() [2/2]

void blender::bke::curves::foreach_selected_point_ranges_per_curve ( const IndexMask & mask,
const OffsetIndices< int > points_by_curve,
SelectedCallback selected_fn,
UnselectedCallback unselected_fn )

Calls callback function for each curve having selected points. Calls second callback for groups of curves with no points selected.

Parameters
maskselected points.
points_by_curveThe offsets of every curve into arrays on the points domain.
selected_fncallback function called for each curve with at least one point selected.
unselected_fncallback function called for groups of curves with no selected points.

Definition at line 154 of file curves_utils.cc.

References foreach_selected_point_ranges_per_curve_(), and mask().

◆ foreach_selected_point_ranges_per_curve_()

◆ get_attribute_accessor_functions()

◆ get_curves_accessor_functions()

◆ if_has_data_call_callback()

void blender::bke::curves::if_has_data_call_callback ( const Span< int > offset_data,
const int begin,
const int end,
UnselectedCallback callback )
static

◆ indices_for_type()

◆ per_curve_point_offsets_range()

IndexRange blender::bke::curves::per_curve_point_offsets_range ( const IndexRange points,
const int curve_index )
inline

◆ segments_num()

int blender::bke::curves::segments_num ( const int points_num,
const bool cyclic )
inline

The number of segments between control points, accounting for the last segment of cyclic curves. The logic is simple, but this function should be used to make intentions clearer.

Definition at line 560 of file BKE_curves.hh.

References BLI_assert.

Referenced by blender::bke::curves::nurbs::calculate_basis_cache(), blender::bke::curves::catmull_rom::calculate_evaluated_num(), blender::bke::curves::nurbs::calculate_evaluated_num(), blender::draw::curve_eval_render_wire_verts_edges_len_get(), blender::bke::fill_mesh_topology(), blender::bke::curves::bezier::has_vector_handles(), and blender::bke::segments_num_no_duplicate_edge().

◆ tag_component_curve_types_changed()

void blender::bke::curves::tag_component_curve_types_changed ( void * owner)
static

Definition at line 24 of file curves_attributes.cc.

Referenced by create_attribute_providers_for_curve().

◆ tag_component_material_index_changed()

void blender::bke::curves::tag_component_material_index_changed ( void * owner)
static

Definition at line 49 of file curves_attributes.cc.

Referenced by create_attribute_providers_for_curve().

◆ tag_component_normals_changed()

void blender::bke::curves::tag_component_normals_changed ( void * owner)
static

Definition at line 43 of file curves_attributes.cc.

Referenced by create_attribute_providers_for_curve().

◆ tag_component_positions_changed()

void blender::bke::curves::tag_component_positions_changed ( void * owner)
static

Definition at line 31 of file curves_attributes.cc.

Referenced by create_attribute_providers_for_curve().

◆ tag_component_radii_changed()

void blender::bke::curves::tag_component_radii_changed ( void * owner)
static

Definition at line 37 of file curves_attributes.cc.

Referenced by create_attribute_providers_for_curve().

◆ tag_component_topology_changed()

void blender::bke::curves::tag_component_topology_changed ( void * owner)
static

Definition at line 18 of file curves_attributes.cc.

Referenced by create_attribute_providers_for_curve().