MayaFlux 0.3.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 331 of file RegionUtils.hpp.

336{
337 std::vector<uint64_t> current = region.start_coordinates;
338 size_t source_index = 0;
339 while (source_index < source_data.size()) {
340 uint64_t linear_index = coordinates_to_linear(current, dimensions);
341 dest_data[linear_index] = source_data[source_index++];
342 bool done = true;
343 /* for (size_t dim = 0; dim < current.size(); ++dim) {
344 if (current[dim] < region.end_coordinates[dim]) {
345 current[dim]++;
346 done = false;
347 break;
348 }
349 current[dim] = region.start_coordinates[dim];
350 } */
351 for (int dim = static_cast<int>(current.size()) - 1; dim >= 0; --dim) {
352 if (current[dim] < region.end_coordinates[dim]) {
353 current[dim]++;
354 done = false;
355 break;
356 }
357 current[dim] = region.start_coordinates[dim];
358 }
359
360 if (done)
361 break;
362 }
363}
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: