Struct MutableSubgrid

Source
pub struct MutableSubgrid<'g, V = f32> { /* private fields */ }
Expand description

A mutable subgrid of the underlying buffer.

Implementations§

Source§

impl<'g, V> MutableSubgrid<'g, V>

Source

pub unsafe fn new( ptr: NonNull<V>, width: usize, height: usize, stride: usize, ) -> Self

Create a mutable subgrid from raw pointer to the buffer, width, height and stride.

§Safety

The area specified by width, height and stride must not overlap with other instances of other subgrids, and the memory region in the area must be valid.

§Panics

Panics if width > stride.

Source

pub fn empty() -> Self

Creates a empty, zero-sized subgrid that points to nowhere.

Source

pub fn from_buf( buf: &'g mut [V], width: usize, height: usize, stride: usize, ) -> Self

Create a MutableSubgrid from buffer slice, width, height and stride.

§Panic

Panics if:

  • width is greater than stride,
  • or the area specified by width, height and stride is larger than buf.
Source

pub fn width(&self) -> usize

Returns the width of the subgrid.

Source

pub fn height(&self) -> usize

Returns the height of the subgrid.

Source

pub fn get_ref(&self, x: usize, y: usize) -> &V

Returns a reference to the sample at the given location.

§Panics

Panics if the coordinate is out of bounds.

Source

pub fn try_get_ref(&self, x: usize, y: usize) -> Option<&V>

Returns a reference to the sample at the given location, or None if it is out of bounds.

Source

pub fn get_row(&self, row: usize) -> &[V]

Returns a slice of a row of samples.

§Panics

Panics if the row index is out of bounds.

Source

pub fn try_get_row(&self, row: usize) -> Option<&[V]>

Returns a slice of a row of samples, or None if it is out of bounds.

Source

pub fn get_mut(&mut self, x: usize, y: usize) -> &mut V

Returns a mutable reference to the sample at the given location.

§Panics

Panics if the coordinate is out of bounds.

Source

pub fn try_get_mut(&mut self, x: usize, y: usize) -> Option<&mut V>

Returns a mutable reference to the sample at the given location, or None if it is out of bounds.

Source

pub fn get_row_mut(&mut self, row: usize) -> &mut [V]

Returns a mutable slice of a row of samples.

§Panics

Panics if the row index is out of bounds.

Source

pub fn try_get_row_mut(&mut self, row: usize) -> Option<&mut [V]>

Returns a mutable slice of a row of samples, or None if it is out of bounds.

Source

pub fn swap(&mut self, (ax, ay): (usize, usize), (bx, by): (usize, usize))

Swaps two samples at the given locations.

§Panics

Panics if either one of the locations is out of bounds.

Source

pub fn borrow_mut(&mut self) -> MutableSubgrid<'_, V>

Reborrows the mutable subgrid, and returns a mutable subgrid with shorter lifetime.

Source

pub fn as_shared(&self) -> SharedSubgrid<'_, V>

Reborrows the mutable subgrid, and returns a shared subgrid.

Source

pub fn subgrid( self, range_x: impl RangeBounds<usize>, range_y: impl RangeBounds<usize>, ) -> MutableSubgrid<'g, V>

Creates a subgrid of this subgrid.

§Panics

Panics if the range is out of bounds.

Source

pub fn split_horizontal( &mut self, x: usize, ) -> (MutableSubgrid<'_, V>, MutableSubgrid<'_, V>)

Split the grid horizontally at an index.

§Panics

Panics if x > self.width().

Source

pub fn split_horizontal_in_place(&mut self, x: usize) -> MutableSubgrid<'g, V>

Split the grid horizontally at an index in-place.

§Panics

Panics if x > self.width().

Source

pub fn split_vertical( &mut self, y: usize, ) -> (MutableSubgrid<'_, V>, MutableSubgrid<'_, V>)

Split the grid vertically at an index.

§Panics

Panics if y > self.height().

Source

pub fn split_vertical_in_place(&mut self, y: usize) -> MutableSubgrid<'g, V>

Split the grid vertically at an index in-place.

§Panics

Panics if y > self.height().

Source

pub fn merge_horizontal_in_place(&mut self, right: Self)

Merges the subgrid with another subgrid horizontally.

Two subgrids must be previously split from a subgrid using split_horizontal or split_horizontal_in_place.

§Panics

Panics if two subgrids have not been split from the same subgrid.

Source

pub fn merge_vertical_in_place(&mut self, bottom: Self)

Merges the subgrid with another subgrid vertically.

Two subgrids must be previously split from a subgrid using split_vertical or split_vertical_in_place.

§Panics

Panics if two subgrids have not been split from the same subgrid.

Source§

impl<V: Copy> MutableSubgrid<'_, V>

Source

pub fn get(&self, x: usize, y: usize) -> V

Returns a copy of sample at the given location.

§Panics

Panics if the coordinate is out of range.

Source§

impl<'g, V> MutableSubgrid<'g, V>

Source

pub fn into_groups( self, group_width: usize, group_height: usize, ) -> Vec<MutableSubgrid<'g, V>>

Returns a list of subgrids split into groups of given size, in row-first order.

Groups at the edge of the grid may have smaller sizes.

§Panics

Panics if either group_width or group_height is zero.

Source

pub fn into_groups_with_fixed_count( self, group_width: usize, group_height: usize, num_cols: usize, num_rows: usize, ) -> Vec<MutableSubgrid<'g, V>>

Returns a list of subgrids split into groups of given size, with num_rows rows and num_cols columns, in row-first order.

Unlike into_groups, this method will always return vector of length num_cols * num_rows. Remaining rows or columns will be truncated, and groups out of bounds will be zero-sized.

Source§

impl MutableSubgrid<'_, f32>

Source

pub fn as_vectored<V: SimdVector>(&mut self) -> Option<MutableSubgrid<'_, V>>

Converts the grid to a grid of SIMD vectors, or None if the grid is not aligned to the SIMD vector type.

§Panics

Panics if given SIMD vector type is not supported.

Source§

impl<'g> MutableSubgrid<'g, f32>

Source

pub fn into_i32(self) -> MutableSubgrid<'g, i32>

Converts this subgrid into i32 subgrid.

Trait Implementations§

Source§

impl<'g, V: Debug> Debug for MutableSubgrid<'g, V>

Source§

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

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

impl<'g, V> From<&'g mut AlignedGrid<V>> for MutableSubgrid<'g, V>

Source§

fn from(grid: &'g mut AlignedGrid<V>) -> Self

Converts to this type from the input type.
Source§

impl<'g, V> Send for MutableSubgrid<'g, V>
where &'g mut [V]: Send,

Source§

impl<'g, V> Sync for MutableSubgrid<'g, V>
where &'g mut [V]: Sync,

Auto Trait Implementations§

§

impl<'g, V> Freeze for MutableSubgrid<'g, V>

§

impl<'g, V> RefUnwindSafe for MutableSubgrid<'g, V>
where V: RefUnwindSafe,

§

impl<'g, V> Unpin for MutableSubgrid<'g, V>

§

impl<'g, V = f32> !UnwindSafe for MutableSubgrid<'g, V>

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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, 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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more