Struct RgbBuffer

Source
pub struct RgbBuffer<'s, const X: usize, const Y: usize, D: HasDisplayHandle, W: HasWindowHandle> {
    pub buffer: Buffer<'s, D, W>,
    pub pixels: &'s mut [[Color; X]],
}
Expand description

An RgbBuffer contains a softbuffer buffer and pixels, a mutable slice of the same data. buffer and pixels reference the same underlying data. Modifying the elements of one will affect the values of the other.

Color data is represented as a 4-element array where the first element is always 0. This will align the color data correctly for softbuffer.

Generic parameters:

  • X and Y are the width and height of the surface. This should always match the actual dimensions of the underlying Surface.
  • D and W are generics that should match those of the Buffer<D, W>.

Fields§

§buffer: Buffer<'s, D, W>

The “raw” softbuffer Buffer.

§pixels: &'s mut [[Color; X]]

The “raw” RGB pixel data as a 3D array where the axes are: Y, X, and 4 (XRGB). Note that the order is: Y, X. Therefore, to get the pixel at x=4, y=5: self.pixels[y][x]. The color has four elements. The first element should always be 0, and the other three are R, G, and B: self.pixels[y][x] = [0, 200, 160, 30]; This will align the color data correctly for softbuffer.

Do not reassign the entire array! It’s a slice of self.buffer. If it’s something else, something bad might happen!

Implementations§

Source§

impl<'s, const X: usize, const Y: usize, D: HasDisplayHandle, W: HasWindowHandle> RgbBuffer<'s, X, Y, D, W>

Source

pub fn from_softbuffer(buffer: Buffer<'s, D, W>) -> Result<Self, SizeError>

Convert a Buffer into an RgbBuffer. This consumes buffer and returns an RgbBuffer. This returns an Error if X * Y != buffer.len() (i.e. if the dimensions of the RgbBuffer are invalid).

Source

pub fn fill(&mut self, color: Color)

Fill the buffer with an [0, r, g, b] color.

Source

pub fn set_pixels(&mut self, positions: &[[usize; 2]], color: Color)

Set the color of multiple pixels.

  • positions: A slice of [x, y] positions.
  • color: The [0, r, g, b] color.

Panics if any position in positions is out of bounds.

Source

pub fn fill_rectangle( &mut self, x: usize, y: usize, w: usize, h: usize, color: Color, )

Fill a rectangle with a color.

  • x and y are the coordinates of the top-left pixel.
  • w and h are the width and height of the rectangle.
  • color is the [0, r, g, b] color.

Panics if the top-left or bottom-right positions are out of bounds.

Auto Trait Implementations§

§

impl<'s, const X: usize, const Y: usize, D, W> Freeze for RgbBuffer<'s, X, Y, D, W>

§

impl<'s, const X: usize, const Y: usize, D, W> !RefUnwindSafe for RgbBuffer<'s, X, Y, D, W>

§

impl<'s, const X: usize, const Y: usize, D, W> Send for RgbBuffer<'s, X, Y, D, W>
where D: Sync + Send, W: Send,

§

impl<'s, const X: usize, const Y: usize, D, W> !Sync for RgbBuffer<'s, X, Y, D, W>

§

impl<'s, const X: usize, const Y: usize, D, W> Unpin for RgbBuffer<'s, X, Y, D, W>

§

impl<'s, const X: usize, const Y: usize, D, W> !UnwindSafe for RgbBuffer<'s, X, Y, D, W>

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> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
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