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

◆ set_or_update_region_data() [1/3]

template<typename T >
void MayaFlux::Kakshya::set_or_update_region_data ( std::span< T >  dest_data,
std::span< const T >  source_data,
const Region region,
const std::vector< DataDimension > &  dimensions 
)

Write or update a region of data in a flat data span (interleaved).

Template Parameters
TData type.
Parameters
dest_dataDestination data span (to be updated).
source_dataSource data span (to write from).
regionRegion to update.
dimensionsDimension descriptors.

Definition at line 322 of file RegionUtils.hpp.

327{
328 std::vector<uint64_t> current = region.start_coordinates;
329 size_t source_index = 0;
330 while (source_index < source_data.size()) {
331 uint64_t linear_index = coordinates_to_linear(current, dimensions);
332 dest_data[linear_index] = source_data[source_index++];
333 bool done = true;
334 /* for (size_t dim = 0; dim < current.size(); ++dim) {
335 if (current[dim] < region.end_coordinates[dim]) {
336 current[dim]++;
337 done = false;
338 break;
339 }
340 current[dim] = region.start_coordinates[dim];
341 } */
342 for (int dim = static_cast<int>(current.size()) - 1; dim >= 0; --dim) {
343 if (current[dim] < region.end_coordinates[dim]) {
344 current[dim]++;
345 done = false;
346 break;
347 }
348 current[dim] = region.start_coordinates[dim];
349 }
350
351 if (done)
352 break;
353 }
354}
uint64_t coordinates_to_linear(const std::vector< uint64_t > &coords, const std::vector< DataDimension > &dimensions)
Convert N-dimensional coordinates to a linear index for interleaved data.
Definition CoordUtils.cpp:6
std::vector< uint64_t > end_coordinates
Ending frame index (inclusive)
Definition Region.hpp:72
std::vector< uint64_t > start_coordinates
Starting frame index (inclusive)
Definition Region.hpp:69

References coordinates_to_linear(), MayaFlux::Kakshya::Region::end_coordinates, and MayaFlux::Kakshya::Region::start_coordinates.

Referenced by set_or_update_region_data(), and set_or_update_region_data().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: