3#include "AttributeComputerDomain.hpp"
4#include "AttributeComputerFamily.hpp"
5#include "../detail/AttributeKernelSupport.hpp"
6#include "detail/ContourSideAttributeMaterialization.hpp"
7#include "detail/ContourSideLocalEventComputation.hpp"
14namespace mmcfilters::attributes::computers {
35 static constexpr std::string_view
familyName =
"contour-side";
38 static constexpr AttributeComputerFamily
family = AttributeComputerFamily::ContourSide;
41 static constexpr AttributeComputerDomain
domain = AttributeComputerDomain::Topology;
64 template <std::
floating_po
int Real>
74 template <std::
floating_po
int Real>
75 static void computeImpl(
80 const auto sideCounts = detail::ContourSideLocalEventComputation::computeContourSideCounts(tree);
81 detail::ContourSideAttributeMaterialization::materializeAttributesFromContourSideCounts(
96 template <std::
floating_po
int Real>
98 detail::ContourSideAttributeMaterialization::materializeUnitContourSideAttributes(
Layout object that maps scalar attributes to flat-buffer offsets.
Mutable morphological tree built directly on proper parts and dense node ids.
Scalar computer backed by local contour-side counts.
static constexpr std::array< Attribute, 6 > producedAttributes
Canonical list of scalar contour attributes materialized by this computer.
static constexpr AttributeComputerDomain domain
Execution domain required by the computer.
static void computeUnitRows(const UnitAttributeComputeContext< Real > &context)
Materializes contour-side attributes for one-pixel unit supports.
static void compute(const AttributeComputeContext< Real > &context)
Computes requested contour-side scalar attributes for live nodes.
static constexpr std::string_view familyName
Family name used in dependency-plan diagnostics.
static constexpr AttributeComputerFamily family
Stable family id used by the scheduler.
Owning result for one computed scalar attribute layout and buffer.