Skip to main content

Strip

Struct Strip 

Source
pub struct Strip {
    pub x: u16,
    pub y: u16,
    packed_alpha_idx_fill_gap: u32,
}
Expand description

A strip.

Fields§

§x: u16

The x coordinate of the strip, in user coordinates.

§y: u16

The y coordinate of the strip, in user coordinates.

§packed_alpha_idx_fill_gap: u32

Packed alpha index and fill gap flag.

Bit layout (u32):

  • bit 31: fill_gap (See Strip::fill_gap()).
  • bits 0..=30: alpha_idx (See Strip::alpha_idx()).

Implementations§

Source§

impl Strip

Source

const FILL_GAP_MASK: u32

The bit mask for fill_gap packed into packed_alpha_idx_fill_gap.

Source

pub fn new(x: u16, y: u16, alpha_idx: u32, fill_gap: bool) -> Self

Creates a new strip.

Source

pub fn sentinel(y: u16, alpha_idx: u32) -> Self

Creates a sentinel strip.

Source

pub fn is_sentinel(&self) -> bool

Return whether the strip is a sentinel strip.

Source

pub fn strip_y(&self) -> u16

Return the y coordinate of the strip, in strip units.

Source

pub fn width_to(&self, next: &Self) -> u16

Returns the horizontal pixel width of this strip.

IMPORTANT: This assumes that the next is actually the next adjacent strip to self, otherwise this method will return a garbage value!

Source

pub fn alpha_idx(&self) -> u32

Returns the alpha index.

Source

pub fn set_alpha_idx(&mut self, alpha_idx: u32)

Sets the alpha index.

Note that the largest value that can be stored in the alpha index is u32::MAX << 1, as the highest bit is reserved for fill_gap.

Source

pub fn fill_gap(&self) -> bool

Returns whether the gap that lies between this strip and the previous in the same row should be filled.

Source

pub fn set_fill_gap(&mut self, fill: bool)

Sets whether the gap that lies between this strip and the previous in the same row should be filled.

Source

fn emit_culled_background<F>( start: u16, end: u16, viewport_width: u16, strips: &mut Vec<Self>, alphas: &mut Vec<u8>, windings: &CulledWindings, should_fill: F, )
where F: FnMut(i32) -> bool,

When early culling is active, geometry fully to the left of the viewport creates no tiles. However, if that geometry has a non-zero winding (e.g. a large shape surrounding the viewport), then we must output strips for those fills.

We reconstruct this “background” fill using row_windings (the winding at x=0) to emit solid strips for: 1. All rows vertically above the first visible tile. 2. ‘Captive’ rows between two tile-containing rows. 3. All rows vertically below the last visible tile.

Trait Implementations§

Source§

impl Clone for Strip

Source§

fn clone(&self) -> Strip

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Strip

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Strip

Source§

fn eq(&self, other: &Strip) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Strip

Source§

impl Eq for Strip

Source§

impl StructuralPartialEq for Strip

Auto Trait Implementations§

§

impl Freeze for Strip

§

impl RefUnwindSafe for Strip

§

impl Send for Strip

§

impl Sync for Strip

§

impl Unpin for Strip

§

impl UnsafeUnpin for Strip

§

impl UnwindSafe for Strip

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, S> SimdFrom<T, S> for T
where S: Simd,

Source§

fn simd_from(_simd: S, value: T) -> T

Source§

impl<F, T, S> SimdInto<T, S> for F
where T: SimdFrom<F, S>, S: Simd,

Source§

fn simd_into(self, simd: S) -> T

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.