MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ send_to_back()

bool MayaFlux::Portal::Forma::Layer::send_to_back ( uint32_t  id)

Move element to the bottom of the hit-test and paint order (drawn first), cascading to every related element.

Definition at line 140 of file Layer.cpp.

141{
142 if (!get(id))
143 return false;
144
145 const std::vector<uint32_t> ids = closure(id);
146
147 auto lower = [this](uint32_t target) {
148 auto it = std::ranges::find_if(m_elements,
149 [target](const Element& e) { return e.id == target; });
150 if (it == m_elements.end())
151 return;
152 std::rotate(m_elements.begin(), it, it + 1);
153 m_index_stale = true;
154
155 if (auto& el = m_elements.front(); el.buffer)
156 el.buffer.send_to_back(--m_next_back_priority);
157 };
158
159 for (size_t i = 1; i < ids.size(); ++i)
160 lower(ids[i]);
161 lower(ids.front());
162
163 return true;
164}
std::vector< uint64_t > ids
std::vector< uint32_t > closure(uint32_t id) const
Return id plus every id transitively related to it.
Definition Layer.cpp:243
const Element * get(uint32_t id) const
Definition Layer.cpp:272
std::vector< Element > m_elements
Definition Layer.hpp:313

References closure(), get(), MayaFlux::Portal::Forma::Element::id, ids, m_elements, m_index_stale, and m_next_back_priority.

+ Here is the call graph for this function: