Struct softbuffer::Surface
source · pub struct Surface { /* private fields */ }Expand description
A surface for drawing to a window with software buffers.
Implementations§
source§impl Surface
impl Surface
sourcepub unsafe fn new<W: HasRawWindowHandle>(
context: &Context,
window: &W
) -> Result<Self, SoftBufferError>
pub unsafe fn new<W: HasRawWindowHandle>( context: &Context, window: &W ) -> Result<Self, SoftBufferError>
Creates a new surface for the context for the provided window.
Safety
- Ensure that the provided objects are valid to draw a 2D buffer to, and are valid for the lifetime of the Context
sourcepub unsafe fn from_raw(
context: &Context,
raw_window_handle: RawWindowHandle
) -> Result<Self, SoftBufferError>
pub unsafe fn from_raw( context: &Context, raw_window_handle: RawWindowHandle ) -> Result<Self, SoftBufferError>
Creates a new surface for the context for the provided raw window handle.
Safety
- Ensure that the provided handles are valid to draw a 2D buffer to, and are valid for the lifetime of the Context
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<'_>, SoftBufferError>
pub fn buffer_mut(&mut self) -> Result<Buffer<'_>, 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.
Auto Trait Implementations§
impl !RefUnwindSafe for Surface
impl !Send for Surface
impl !Sync for Surface
impl Unpin for Surface
impl !UnwindSafe for Surface
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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.