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>
impl<D: HasDisplayHandle, W: HasWindowHandle> Surface<D, W>
sourcepub fn new(context: &Context<D>, window: W) -> Result<Self, SoftBufferError>
pub fn new(context: &Context<D>, window: W) -> Result<Self, SoftBufferError>
Creates a new surface for the context for the provided window.
sourcepub fn resize(
&mut self,
width: NonZeroU32,
height: NonZeroU32,
) -> Result<(), SoftBufferError>
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.
sourcepub fn fetch(&mut self) -> Result<Vec<u32>, SoftBufferError>
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.
sourcepub fn buffer_mut(&mut self) -> Result<Buffer<'_, D, W>, SoftBufferError>
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>
impl<D: HasDisplayHandle, W: HasWindowHandle> AsRef<W> for Surface<D, W>
source§impl<D: HasDisplayHandle, W: HasWindowHandle> HasWindowHandle for Surface<D, W>
impl<D: HasDisplayHandle, W: HasWindowHandle> HasWindowHandle for Surface<D, W>
source§fn window_handle(&self) -> Result<WindowHandle<'_>, HandleError>
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§fn into_any(self: Box<T>) -> Box<dyn Any>
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>
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)
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)
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> HasRawWindowHandle for Twhere
T: HasWindowHandle + ?Sized,
impl<T> HasRawWindowHandle for Twhere
T: HasWindowHandle + ?Sized,
source§fn raw_window_handle(&self) -> Result<RawWindowHandle, HandleError>
fn raw_window_handle(&self) -> Result<RawWindowHandle, HandleError>
👎Deprecated: Use
HasWindowHandle
instead