pub enum Coverage {
Empty,
Bounded(Rect),
Unbounded,
}Expand description
Where an entity lands, or that it lands nowhere, or that it lands wherever it is allowed to.
Three cases rather than a rectangle, because two of them are not rectangles.
Nothing drawn has no bounds to report and must not be confused with a
zero-area rectangle at the origin, which is a real place. And drawPaint
covers whatever the clip admits, which is unbounded until a clip says
otherwise – representing that as a very large rectangle would be a number
chosen by whoever wrote it, and would be wrong at some scale.
Variants§
Empty
Nothing is drawn.
Bounded(Rect)
Everything inside this rectangle, in device coordinates, may be.
Unbounded
Whatever the clip admits. Only a clip can bound this.
Implementations§
Source§impl Coverage
impl Coverage
Sourcepub fn resolve(self, clip: Option<Rect>) -> Option<Rect>
pub fn resolve(self, clip: Option<Rect>) -> Option<Rect>
The rectangle this covers, given what the clip admits.
None for nothing drawn. An unbounded coverage resolves to the clip,
which is what makes an unclipped drawPaint the one case that cannot
answer – the caller has to supply the target’s bounds as the clip.
Sourcepub fn clipped(self, clip: Rect) -> Self
pub fn clipped(self, clip: Rect) -> Self
Narrow by what a clip admits.
An unbounded coverage becomes the clip, which is the whole reason the unbounded case can be carried around at all rather than being resolved where it arises.
Sourcepub fn grown(self, reach: Vec2) -> Self
pub fn grown(self, reach: Vec2) -> Self
Grow outward by this much in each direction, in device pixels.
Growing nothing leaves nothing: a filter that reaches outward from a shape that was never drawn still draws nothing, and a blur of an empty region is empty rather than a soft patch of nowhere.
Trait Implementations§
impl Copy for Coverage
impl StructuralPartialEq for Coverage
Auto Trait Implementations§
impl Freeze for Coverage
impl RefUnwindSafe for Coverage
impl Send for Coverage
impl Sync for Coverage
impl Unpin for Coverage
impl UnsafeUnpin for Coverage
impl UnwindSafe for Coverage
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