usena::RealField;usecrate::math::{Point, Vector};usecrate::procedural::TriMesh;/// A sample point and its associated tangent.
pubenumPathSample<N: RealField + Copy> {/// A point that starts a new path.
StartPoint(Point<N>,Vector<N>),/// A point that is inside of the path currently generated.
InnerPoint(Point<N>,Vector<N>),/// A point that ends the path currently generated.
EndPoint(Point<N>,Vector<N>),/// Used when the sampler does not have any other points to generate.
EndOfSample,}/// A curve sampler.
pubtraitCurveSampler<N: RealField + Copy> {/// Returns the next sample point.
fnnext(&mutself)->PathSample<N>;}/// A pattern that is replicated along a path.
////// It is responsible of the generation of the whole mesh.
pubtraitStrokePattern<N: RealField + Copy> {/// Generates the mesh using this pattern and the curve sampled by `sampler`.
fnstroke<C:CurveSampler<N>>(&mutself, sampler:&mut C)->TriMesh<N>;}