Write a sample range back into a series.
Same coordinate convention as get_region_data(). The first DataVariant in data must hold vector<double>. Used by Context drag handlers for wavetable editing and interactive signal manipulation.
Implements MayaFlux::Kakshya::NDDataContainer< DataVariant >.
Definition at line 275 of file PlotContainer.cpp.
276{
277 if (data.empty() || region.start_coordinates.empty())
278 return;
279
280 const auto series_idx = static_cast<size_t>(region.start_coordinates[0]);
281 if (series_idx >=
m_data.size())
282 return;
283
284 const auto*
src = std::get_if<std::vector<double>>(&data[0]);
286 return;
287
289 auto*
dst = std::get_if<std::vector<double>>(&
m_data[series_idx]);
291 return;
292
293 const uint64_t s = (region.start_coordinates.size() > 1) ? region.start_coordinates[1] : 0;
294 const uint64_t e = (region.end_coordinates.size() > 1)
295 ? std::min(region.end_coordinates[1],
static_cast<uint64_t
>(
dst->size() - 1))
296 : static_cast<uint64_t>(
dst->
size() - 1);
297 if (s > e)
298 return;
299
300 const uint64_t n = std::min<uint64_t>(
src->size(), e - s + 1);
301 std::copy_n(
src->begin(), n,
dst->begin() +
static_cast<ptrdiff_t
>(s));
302}
std::vector< DataVariant > m_data
Memory::SeqlockArray m_series_locks
References dst, MayaFlux::Kakshya::Region::end_coordinates, m_data, m_series_locks, src, and MayaFlux::Kakshya::Region::start_coordinates.