pub struct MeshHiddenLinesRegistry { /* private fields */ }Expand description
Ordered executable hidden-line providers.
Only unsupported/unavailable providers permit fallback. Geometry,
degeneracy, budget, cancellation, and contract errors fail immediately.
A refusal caused by one input mesh names it
(HiddenLineError::mesh); a refusal of the whole request does not.
hidden_lines names the first refused mesh only; a
caller that drops refused meshes and draws the rest learns all of them in
one call from audit.
Implementations§
Source§impl MeshHiddenLinesRegistry
impl MeshHiddenLinesRegistry
Sourcepub fn register<P>(&mut self, priority: i32, provider: P)where
P: MeshHiddenLines + 'static,
pub fn register<P>(&mut self, priority: i32, provider: P)where
P: MeshHiddenLines + 'static,
Register an implementation. Higher priorities run first.
Sourcepub fn register_conformant<P>(
&mut self,
priority: i32,
provider: P,
) -> Result<(), Box<ConformanceReport>>where
P: MeshHiddenLines + 'static,
pub fn register_conformant<P>(
&mut self,
priority: i32,
provider: P,
) -> Result<(), Box<ConformanceReport>>where
P: MeshHiddenLines + 'static,
Validate a provider with the shared conformance suite before registration.
A provider that claims perspective views (supports_projection) is
also run through the perspective suite, and a failure of it is
reported as a ReturnedError of the case perspective claim, so a
claim is never routed to unverified (ADR 0107).
Sourcepub fn register_perspective_conformant<P>(
&mut self,
priority: i32,
provider: P,
) -> Result<(), Box<PerspectiveConformanceReport>>where
P: MeshHiddenLines + 'static,
pub fn register_perspective_conformant<P>(
&mut self,
priority: i32,
provider: P,
) -> Result<(), Box<PerspectiveConformanceReport>>where
P: MeshHiddenLines + 'static,
Validate a provider with the shared suite and the perspective suite
before registration (ADR 0107). The claim is the provider’s
supports_projection(ViewProjection::Perspective): a provider that does
not claim it must refuse perspective views by name, one that does must
pass the perspective fixtures. Failures of either suite are in the
report.
Sourcepub fn register_arc(
&mut self,
priority: i32,
provider: Arc<dyn MeshHiddenLines>,
)
pub fn register_arc( &mut self, priority: i32, provider: Arc<dyn MeshHiddenLines>, )
Register a shared implementation. Higher priorities run first.
Sourcepub fn providers(&self) -> impl Iterator<Item = &dyn MeshHiddenLines>
pub fn providers(&self) -> impl Iterator<Item = &dyn MeshHiddenLines>
Registered providers in dispatch order.
Sourcepub fn audit(
&self,
request: &HiddenLineRequest<'_>,
options: &ExecutionOptions,
) -> Result<Vec<RefusedMesh>, HiddenLineError>
pub fn audit( &self, request: &HiddenLineRequest<'_>, options: &ExecutionOptions, ) -> Result<Vec<RefusedMesh>, HiddenLineError>
Every input mesh that hidden_lines would
refuse, in request order, without searching.
Runs only the per-mesh audit of shape and topology, through the code
hidden_lines uses, so a mesh is listed exactly when hidden_lines
would refuse a request holding it. An empty list means every mesh
passes the audit (a provider can still refuse). A caller that leaves
the listed meshes out and calls hidden_lines again draws the rest;
no substitute drawing is made. A refusal of the whole request (limits,
frame, memory, cancellation, an empty request, a duplicate id or a mesh
without triangles) is returned as Err, as it is by hidden_lines.
Validate and execute one hidden-line request.
Trait Implementations§
Source§impl Clone for MeshHiddenLinesRegistry
impl Clone for MeshHiddenLinesRegistry
Source§fn clone(&self) -> MeshHiddenLinesRegistry
fn clone(&self) -> MeshHiddenLinesRegistry
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for MeshHiddenLinesRegistry
impl Debug for MeshHiddenLinesRegistry
Source§impl Default for MeshHiddenLinesRegistry
impl Default for MeshHiddenLinesRegistry
Source§fn default() -> MeshHiddenLinesRegistry
fn default() -> MeshHiddenLinesRegistry
Auto Trait Implementations§
impl !RefUnwindSafe for MeshHiddenLinesRegistry
impl !UnwindSafe for MeshHiddenLinesRegistry
impl Freeze for MeshHiddenLinesRegistry
impl Send for MeshHiddenLinesRegistry
impl Sync for MeshHiddenLinesRegistry
impl Unpin for MeshHiddenLinesRegistry
impl UnsafeUnpin for MeshHiddenLinesRegistry
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more