Struct softbuffer::Surface

source ·
pub struct Surface<D, W> { /* private fields */ }
Expand description

A surface for drawing to a window with software buffers.

Implementations§

source§

impl<D: HasDisplayHandle, W: HasWindowHandle> Surface<D, W>

source

pub fn new(context: &Context<D>, window: W) -> Result<Self, SoftBufferError>

Creates a new surface for the context for the provided window.

source

pub fn window(&self) -> &W

Get a reference to the underlying window handle.

source

pub fn resize( &mut self, width: NonZeroU32, height: NonZeroU32, ) -> Result<(), SoftBufferError>

Set the size of the buffer that will be returned by Surface::buffer_mut.

If the size of the buffer does not match the size of the window, the buffer is drawn in the upper-left corner of the window. It is recommended in most production use cases to have the buffer fill the entire window. Use your windowing library to find the size of the window.

source

pub fn fetch(&mut self) -> Result<Vec<u32>, SoftBufferError>

Copies the window contents into a buffer.

§Platform Dependent Behavior
  • On X11, the window must be visible.
  • On macOS, Redox and Wayland, this function is unimplemented.
  • On Web, this will fail if the content was supplied by a different origin depending on the sites CORS rules.
source

pub fn buffer_mut(&mut self) -> Result<Buffer<'_, D, W>, SoftBufferError>

Return a Buffer that the next frame should be rendered into. The size must be set with Surface::resize first. The initial contents of the buffer may be zeroed, or may contain a previous frame. Call Buffer::age to determine this.

§Platform Dependent Behavior
  • On DRM/KMS, there is no reliable and sound way to wait for the page flip to happen from within softbuffer. Therefore it is the responsibility of the user to wait for the page flip before sending another frame.

Trait Implementations§

source§

impl<D: HasDisplayHandle, W: HasWindowHandle> AsRef<W> for Surface<D, W>

source§

fn as_ref(&self) -> &W

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl<D: HasDisplayHandle, W: HasWindowHandle> HasWindowHandle for Surface<D, W>

source§

fn window_handle(&self) -> Result<WindowHandle<'_>, HandleError>

Get a handle to the window.

Auto Trait Implementations§

§

impl<D, W> Freeze for Surface<D, W>

§

impl<D, W> !RefUnwindSafe for Surface<D, W>

§

impl<D, W> !Send for Surface<D, W>

§

impl<D, W> !Sync for Surface<D, W>

§

impl<D, W> Unpin for Surface<D, W>

§

impl<D, W> !UnwindSafe for Surface<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> HasRawWindowHandle for T
where T: HasWindowHandle + ?Sized,

source§

fn raw_window_handle(&self) -> Result<RawWindowHandle, HandleError>

👎Deprecated: Use HasWindowHandle instead
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