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

◆ get_region_data()

std::vector< DataVariant > MayaFlux::Kakshya::PlotContainer::get_region_data ( const Region region) const
overridevirtual

Extract a sample range from a single series.

region.start_coordinates[0] = series index. region.start_coordinates[1] = first sample (inclusive). region.end_coordinates[1] = last sample (inclusive).

Returns a single DataVariant containing vector<double> of the slice. Returns empty if coordinates are out of range.

Implements MayaFlux::Kakshya::NDDataContainer.

Definition at line 219 of file PlotContainer.cpp.

220{
221 if (region.start_coordinates.empty() || region.end_coordinates.empty())
222 return {};
223
224 const uint64_t series_idx = region.start_coordinates[0];
225 if (series_idx >= m_data.size())
226 return {};
227
228 const auto* src = std::get_if<std::vector<double>>(&m_data[series_idx]);
229 if (!src || src->empty())
230 return {};
231
232 const uint64_t s = (region.start_coordinates.size() > 1) ? region.start_coordinates[1] : 0;
233 const uint64_t e = (region.end_coordinates.size() > 1)
234 ? std::min(region.end_coordinates[1], static_cast<uint64_t>(src->size() - 1))
235 : static_cast<uint64_t>(src->size() - 1);
236
237 if (s > e)
238 return {};
239
240 std::vector<double> slice(src->begin() + static_cast<ptrdiff_t>(s),
241 src->begin() + static_cast<ptrdiff_t>(e + 1));
242 return { DataVariant(std::move(slice)) };
243}
std::vector< DataVariant > m_data
std::variant< std::vector< double >, std::vector< float >, std::vector< uint8_t >, std::vector< uint16_t >, std::vector< uint32_t >, std::vector< std::complex< float > >, std::vector< std::complex< double > >, std::vector< glm::vec2 >, std::vector< glm::vec3 >, std::vector< glm::vec4 >, std::vector< glm::mat4 > > DataVariant
Multi-type data storage for different precision needs.
Definition NDData.hpp:76
std::vector< double > slice(std::span< const double > data, double start_ratio, double end_ratio)
Extract a contiguous slice by ratio, returning a new vector.

References MayaFlux::Kakshya::Region::end_coordinates, m_data, and MayaFlux::Kakshya::Region::start_coordinates.

Referenced by get_region_group_data().

+ Here is the caller graph for this function: