28 curves.
curves_range(), grain_size, memory, [&](
const int curve_i) {
29 const IndexRange points = points_by_curve[curve_i];
30 for (const int point_i : points) {
31 if (selected[point_i]) {
41 const int amount_start,
51 .
slice(points_by_curve[curve_i].drop_front(amount_start).drop_back(amount_end))
52 .fill(inverted ?
true :
false);
55 return IndexMask::from_bools(
end_points, memory);
59 const int amount_start,
Low-level operations for curves.
OffsetIndices< int > points_by_curve() const
IndexRange curves_range() const
static IndexMask from_predicate(const IndexMask &universe, GrainSize grain_size, IndexMaskMemory &memory, Fn &&predicate)
IndexMask slice(IndexRange range) const
void to_bools(MutableSpan< bool > r_bools) const
void foreach_index(Fn &&fn) const
IndexMask curve_mask_from_points(const bke::CurvesGeometry &curves, const IndexMask &point_mask, const GrainSize grain_size, IndexMaskMemory &memory)
IndexMask end_points(const bke::CurvesGeometry &curves, const IndexMask &curves_mask, const int amount_start, const int amount_end, const bool inverted, IndexMaskMemory &memory)