Struct Tile

Source
#[repr(C)]
pub struct Tile { pub packed_winding_line_idx: u32, pub x: u16, pub y: u16, }
Expand description

A tile represents an aligned area on the pixmap, used to subdivide the viewport into sub-areas (currently 4x4) and analyze line intersections inside each such area.

Keep in mind that it is possible to have multiple tiles with the same index, namely if we have multiple lines crossing the same 4x4 area!

§Note

This struct is #[repr(C)], but the byte order of its fields is dependent on the endianness of the compilation target.

Fields§

§packed_winding_line_idx: u32

The index of the line this tile belongs to into the line buffer, plus whether the line crosses the top edge of the tile, packed together.

The index is the unsigned number in the 31 least significant bits of this value.

The last bit is 1 if and only if the lines crosses the tile’s top edge. Lines making this crossing increment or decrement the coarse tile winding, depending on the line direction.

§x: u16

The index of the tile in the x direction.

§y: u16

The index of the tile in the y direction.

Implementations§

Source§

impl Tile

Source

pub const WIDTH: u16 = 4u16

The width of a tile in pixels.

Source

pub const HEIGHT: u16 = 4u16

The height of a tile in pixels.

Source

pub const fn new(x: u16, y: u16, line_idx: u32, winding: bool) -> Self

Create a new tile.

line_idx must be smaller than MAX_LINES_PER_PATH.

Source

pub const fn same_loc(&self, other: &Self) -> bool

Check whether two tiles are at the same location.

Source

pub const fn prev_loc(&self, other: &Self) -> bool

Check whether self is adjacent to the left of other.

Source

pub const fn same_row(&self, other: &Self) -> bool

Check whether two tiles are on the same row.

Source

pub const fn line_idx(&self) -> u32

The index of the line this tile belongs to into the line buffer.

Source

pub const fn winding(&self) -> bool

Whether the line crosses the top edge of the tile.

Lines making this crossing increment or decrement the coarse tile winding, depending on the line direction.

Source

const fn to_bits(self) -> u64

Return the u64 representation of this tile.

This is the u64 interpretation of (y, x, packed_winding_line_idx) where y is the most-significant part of the number and packed_winding_line_idx the least significant.

Trait Implementations§

Source§

impl Clone for Tile

Source§

fn clone(&self) -> Tile

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Tile

Source§

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

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

impl Ord for Tile

Source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for Tile

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · 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 PartialOrd for Tile

Source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Copy for Tile

Source§

impl Eq for Tile

Auto Trait Implementations§

§

impl Freeze for Tile

§

impl RefUnwindSafe for Tile

§

impl Send for Tile

§

impl Sync for Tile

§

impl Unpin for Tile

§

impl UnwindSafe for Tile

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(value: T, _simd: S) -> 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.