pub struct PrimitiveDependencyInfo {
pub prim_clip_box: PictureBox2D,
pub images: SmallVec<[ImageDependency; 8]>,
pub opacity_bindings: SmallVec<[Binding<f32>; 4]>,
pub color_binding: Option<Binding<ColorU>>,
pub prim_uid: ItemUid,
pub prim_scratch: VertRange,
pub cov_scratch: VertRange,
pub clips: SmallVec<[(ItemUid, VertRange); 4]>,
}Expand description
Information about the dependencies of a single primitive instance. Built once per primitive (outside the tile loop); passed to each tile’s add_prim_dependency, which does the per-tile clamping and vert-data push.
Fields§
§prim_clip_box: PictureBox2DThe (conservative) clipped area in picture space this primitive occupies. Used for local_valid_rect accumulation and quadtree binning.
images: SmallVec<[ImageDependency; 8]>Image keys this primitive depends on.
opacity_bindings: SmallVec<[Binding<f32>; 4]>Opacity bindings this primitive depends on.
color_binding: Option<Binding<ColorU>>Color binding this primitive depends on.
prim_uid: ItemUidIntern uid for this primitive instance. Stable across frames and across content-side scroll events: scene building normalises each primitive’s prim_rect by the accumulated external_scroll_offset before interning, so the key (and therefore this uid) does not change when the scroll position changes. If external_scroll_offset is ever removed, this stability guarantee would need to be preserved by another mechanism.
prim_scratch: VertRangeScratch range for the primitive’s rect corners in raster space (unquantized). Quantized into per-tile vert_data inside add_prim_dependency.
cov_scratch: VertRangeScratch range for the coverage rect corners (prim ∩ clip) in raster space. Tracked separately from prim_scratch because merging them into a single intersection loses prim-rect information: a UV-mapped primitive whose rect changes size while the clip keeps the visible region constant would produce an unchanged intersection yet sample different source pixels. Using coverage_rect (rather than the raw local_clip_rect) avoids spurious invalidations when the clip changes outside the prim extent.
clips: SmallVec<[(ItemUid, VertRange); 4]>Per-clip data: (clip intern uid, scratch range for clip corners). The uid covers the clip’s shape/mode; position is captured in the scratch range.
Implementations§
Source§impl PrimitiveDependencyInfo
impl PrimitiveDependencyInfo
pub fn new(prim_uid: ItemUid, prim_clip_box: PictureBox2D) -> Self
Auto Trait Implementations§
impl Freeze for PrimitiveDependencyInfo
impl RefUnwindSafe for PrimitiveDependencyInfo
impl Send for PrimitiveDependencyInfo
impl Sync for PrimitiveDependencyInfo
impl Unpin for PrimitiveDependencyInfo
impl UnsafeUnpin for PrimitiveDependencyInfo
impl UnwindSafe for PrimitiveDependencyInfo
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> 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