BLI: Add "take front" and "take back" methods to bit spans #107441
@ -336,8 +336,8 @@ Mesh *BKE_mesh_mirror_apply_mirror_on_axis_for_modifier(MirrorModifierData *mmd,
|
||||
const blender::BoundedBitSpan src = mesh->runtime->subsurf_optimal_display_edges;
|
||||
result->runtime->subsurf_optimal_display_edges.resize(result->totedge);
|
||||
blender::MutableBoundedBitSpan dst = result->runtime->subsurf_optimal_display_edges;
|
||||
dst.slice({0, src.size()}).copy_from(src);
|
||||
dst.slice({src.size(), src.size()}).copy_from(src);
|
||||
dst.take_front(src.size()).copy_from(src);
|
||||
dst.take_back(src.size()).copy_from(src);
|
||||
}
|
||||
|
||||
/* handle uvs,
|
||||
|
@ -110,6 +110,16 @@ class BitSpan {
|
||||
return {data_, bit_range_.slice(range)};
|
||||
}
|
||||
|
||||
BitSpan take_front(const int64_t n) const
|
||||
{
|
||||
return {data_, bit_range_.take_front(n)};
|
||||
}
|
||||
|
||||
BitSpan take_back(const int64_t n) const
|
||||
{
|
||||
return {data_, bit_range_.take_back(n)};
|
||||
}
|
||||
|
||||
const BitInt *data() const
|
||||
{
|
||||
return data_;
|
||||
@ -195,6 +205,11 @@ class BoundedBitSpan : public BitSpan {
|
||||
{
|
||||
return bit_range_.size() & BitIndexMask;
|
||||
}
|
||||
|
||||
BoundedBitSpan take_front(const int64_t n) const
|
||||
{
|
||||
return {data_, bit_range_.take_front(n)};
|
||||
}
|
||||
};
|
||||
|
||||
/** Same as #BitSpan, but also allows modifying the referenced bits. */
|
||||
@ -237,6 +252,16 @@ class MutableBitSpan {
|
||||
return {data_, bit_range_.slice(range)};
|
||||
}
|
||||
|
||||
MutableBitSpan take_front(const int64_t n) const
|
||||
{
|
||||
return {data_, bit_range_.take_front(n)};
|
||||
}
|
||||
|
||||
MutableBitSpan take_back(const int64_t n) const
|
||||
{
|
||||
return {data_, bit_range_.take_back(n)};
|
||||
}
|
||||
|
||||
BitInt *data() const
|
||||
{
|
||||
return data_;
|
||||
@ -331,6 +356,11 @@ class MutableBoundedBitSpan : public MutableBitSpan {
|
||||
return bit_range_.size() & BitIndexMask;
|
||||
}
|
||||
|
||||
MutableBoundedBitSpan take_front(const int64_t n) const
|
||||
{
|
||||
return {data_, bit_range_.take_front(n)};
|
||||
}
|
||||
|
||||
void copy_from(const BitSpan other);
|
||||
void copy_from(const BoundedBitSpan other);
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user