Struct Window

pub struct Window { /* private fields */ }
Available on crate feature dep_sdl3 only.
Expand description

Represents the “shell” of a Window.

You can set get and set many of the SDL_Window properties (i.e., border, size, PixelFormat, etc)

However, you cannot directly access the pixels of the Window. It needs to be converted to a Canvas to access the rendering functions.

Note: If a Window goes out of scope but it cloned its context, then the SDL_Window will not be destroyed until there are no more references to the WindowContext. This may happen when a TextureCreator<Window> outlives the Canvas<Window>

Implementations§

§

impl Window

pub fn raw(&self) -> *mut SDL_Window

pub unsafe fn from_ll( subsystem: VideoSubsystem, raw: *mut SDL_Window, metal_view: *mut c_void, ) -> Window

pub const unsafe fn from_ref(context: Arc<WindowContext>) -> Window

Create a new Window without taking ownership of the WindowContext

pub fn subsystem(&self) -> &VideoSubsystem

pub fn into_canvas(self) -> Canvas<Window>

Initializes a new `WindowCanvas’;

pub fn context(&self) -> Arc<WindowContext>

pub fn id(&self) -> u32

pub fn gl_create_context(&self) -> Result<GLContext, Error>

pub unsafe fn gl_get_current_context(&self) -> Option<GLContext>

pub fn gl_set_context_to_current(&self) -> Result<(), Error>

Set the window’s OpenGL context to the current context on the thread.

pub fn gl_make_current(&self, context: &GLContext) -> Result<(), Error>

pub fn gl_swap_window(&self)

pub fn vulkan_instance_extensions(&self) -> Result<Vec<String>, Error>

Get the names of the Vulkan instance extensions needed to create a surface with vulkan_create_surface.

pub fn vulkan_create_surface( &self, instance: *mut __VkInstance, ) -> Result<*mut __VkSurfaceKHR, Error>

Create a Vulkan rendering surface for a window.

The VkInstance must be created using a prior call to the vkCreateInstance function in the Vulkan library.

pub fn get_display(&self) -> Result<Display, Error>

pub fn set_display_mode<D>(&mut self, display_mode: D) -> Result<(), Error>
where D: Into<Option<DisplayMode>>,

pub fn display_mode(&self) -> Option<DisplayMode>

pub fn icc_profile(&self) -> Result<Vec<u8>, Error>

pub fn window_pixel_format(&self) -> PixelFormat

pub fn window_flags(&self) -> u64

pub fn has_input_focus(&self) -> bool

Does the window have input focus?

pub fn has_input_grabbed(&self) -> bool

Has the window grabbed input focus?

pub fn has_mouse_focus(&self) -> bool

Does the window have mouse focus?

pub fn is_maximized(&self) -> bool

Is the window maximized?

pub fn is_minimized(&self) -> bool

Is the window minimized?

pub fn set_title(&mut self, title: &str) -> Result<(), NulError>

pub fn title(&self) -> &str

pub fn set_icon<S>(&mut self, icon: S) -> bool
where S: AsRef<SurfaceRef>,

Use this function to set the icon for a window.

§Example:
// requires "--features 'image'"
use sdl3::surface::Surface;

let window_icon = Surface::from_file("/path/to/icon.png")?;
window.set_icon(window_icon);

pub fn set_position(&mut self, x: WindowPos, y: WindowPos) -> bool

pub fn position(&self) -> (i32, i32)

pub fn border_size(&self) -> Result<(u16, u16, u16, u16), Error>

Use this function to get the size of a window’s borders (decorations) around the client area.

§Remarks

This function is only supported on X11, otherwise an error is returned.

pub fn set_size( &mut self, width: u32, height: u32, ) -> Result<(), IntegerOrSdlError>

pub fn size(&self) -> (u32, u32)

pub fn pixel_density(&self) -> f32

pub fn size_in_pixels(&self) -> (u32, u32)

pub fn set_minimum_size( &mut self, width: u32, height: u32, ) -> Result<(), IntegerOrSdlError>

pub fn minimum_size(&self) -> (u32, u32)

pub fn set_maximum_size( &mut self, width: u32, height: u32, ) -> Result<(), IntegerOrSdlError>

pub fn maximum_size(&self) -> (u32, u32)

pub fn set_bordered(&mut self, bordered: bool) -> bool

pub fn show(&mut self) -> bool

pub fn hide(&mut self) -> bool

pub fn raise(&mut self) -> bool

pub fn maximize(&mut self) -> bool

pub fn minimize(&mut self) -> bool

pub fn restore(&mut self) -> bool

pub fn fullscreen_state(&self) -> FullscreenType

pub fn set_fullscreen(&mut self, fullscreen: bool) -> Result<(), Error>

pub fn surface<'a>( &'a self, _e: &'a EventPump, ) -> Result<WindowSurfaceRef<'a>, Error>

Returns a WindowSurfaceRef, which can be used like a regular Surface. This is an alternative way to the Renderer (Canvas) way to modify pixels directly in the Window.

For this to happen, simply create a WindowSurfaceRef via this method, use the underlying Surface however you like, and when the changes of the Surface must be applied to the screen, call update_window if you intend to keep using the WindowSurfaceRef afterwards, or finish if you don’t intend to use it afterwards.

The Renderer way is of course much more flexible and recommended; even though you only want to support Software Rendering (which is what using Surface is), you can still create a Renderer which renders in a Software-based manner, so try to rely on a Renderer as much as possible !

pub fn set_keyboard_grab(&mut self, grabbed: bool) -> bool

pub fn set_mouse_grab(&mut self, grabbed: bool) -> bool

pub fn keyboard_grab(&self) -> bool

pub fn mouse_grab(&self) -> bool

pub fn set_mouse_rect<R>(&self, rect: R) -> Result<(), Error>
where R: Into<Option<Rect>>,

pub fn mouse_rect(&self) -> Option<Rect>

pub fn set_opacity(&mut self, opacity: f32) -> Result<(), Error>

Set the transparency of the window. The given value will be clamped internally between 0.0 (fully transparent), and 1.0 (fully opaque).

This method returns an error if opacity isn’t supported by the current platform.

pub fn opacity(&self) -> Result<f32, Error>

Returns the transparency of the window, as a value between 0.0 (fully transparent), and 1.0 (fully opaque).

If opacity isn’t supported by the current platform, this method returns Ok(1.0) instead of an error.

pub fn flash(&mut self, operation: FlashOperation) -> Result<(), Error>

Requests a window to demand attention from the user.

Trait Implementations§

§

impl Clone for Window

§

fn clone(&self) -> Window

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl From<Window> for Canvas<Window>

§

fn from(window: Window) -> Canvas<Window>

Converts to this type from the input type.
§

impl From<WindowContext> for Window

§

fn from(context: WindowContext) -> Window

Converts to this type from the input type.
§

impl RenderTarget for Window

Auto Trait Implementations§

§

impl Freeze for Window

§

impl RefUnwindSafe for Window

§

impl !Send for Window

§

impl !Sync for Window

§

impl Unpin for Window

§

impl UnwindSafe for Window

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

Source§

const BYTE_ALIGN: usize = _

The alignment of this type in bytes.
Source§

const BYTE_SIZE: usize = _

The size of this type in bytes.
Source§

fn byte_align(&self) -> usize

Returns the alignment of this type in bytes.
Source§

fn byte_size(&self) -> usize

Returns the size of this type in bytes. Read more
Source§

fn ptr_size_ratio(&self) -> [usize; 2]

Returns the size ratio between Ptr::BYTES and BYTE_SIZE. Read more
Source§

impl<T, R> Chain<R> for T
where T: ?Sized,

Source§

fn chain<F>(self, f: F) -> R
where F: FnOnce(Self) -> R, Self: Sized,

Chain a function which takes the parameter by value.
Source§

fn chain_ref<F>(&self, f: F) -> R
where F: FnOnce(&Self) -> R,

Chain a function which takes the parameter by shared reference.
Source§

fn chain_mut<F>(&mut self, f: F) -> R
where F: FnOnce(&mut Self) -> R,

Chain a function which takes the parameter by exclusive reference.
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> ExtAny for T
where T: Any + ?Sized,

Source§

fn type_id() -> TypeId

Returns the TypeId of Self. Read more
Source§

fn type_of(&self) -> TypeId

Returns the TypeId of self. Read more
Source§

fn type_name(&self) -> &'static str

Returns the type name of self. Read more
Source§

fn type_is<T: 'static>(&self) -> bool

Returns true if Self is of type T. Read more
Source§

fn type_hash(&self) -> u64

Returns a deterministic hash of the TypeId of Self.
Source§

fn type_hash_with<H: Hasher>(&self, hasher: H) -> u64

Returns a deterministic hash of the TypeId of Self using a custom hasher.
Source§

fn as_any_ref(&self) -> &dyn Any
where Self: Sized,

Upcasts &self as &dyn Any. Read more
Source§

fn as_any_mut(&mut self) -> &mut dyn Any
where Self: Sized,

Upcasts &mut self as &mut dyn Any. Read more
Source§

fn as_any_box(self: Box<Self>) -> Box<dyn Any>
where Self: Sized,

Upcasts Box<self> as Box<dyn Any>. Read more
Source§

fn downcast_ref<T: 'static>(&self) -> Option<&T>

Available on crate feature unsafe_layout only.
Returns some shared reference to the inner value if it is of type T. Read more
Source§

fn downcast_mut<T: 'static>(&mut self) -> Option<&mut T>

Available on crate feature unsafe_layout only.
Returns some exclusive reference to the inner value if it is of type T. Read more
Source§

impl<T> ExtMem for T
where T: ?Sized,

Source§

const NEEDS_DROP: bool = _

Know whether dropping values of this type matters, in compile-time.
Source§

fn mem_align_of<T>() -> usize

Returns the minimum alignment of the type in bytes. Read more
Source§

fn mem_align_of_val(&self) -> usize

Returns the alignment of the pointed-to value in bytes. Read more
Source§

fn mem_size_of<T>() -> usize

Returns the size of a type in bytes. Read more
Source§

fn mem_size_of_val(&self) -> usize

Returns the size of the pointed-to value in bytes. Read more
Source§

fn mem_copy(&self) -> Self
where Self: Copy,

Bitwise-copies a value. Read more
Source§

fn mem_needs_drop(&self) -> bool

Returns true if dropping values of this type matters. Read more
Source§

fn mem_drop(self)
where Self: Sized,

Drops self by running its destructor. Read more
Source§

fn mem_forget(self)
where Self: Sized,

Forgets about self without running its destructor. Read more
Source§

fn mem_replace(&mut self, other: Self) -> Self
where Self: Sized,

Replaces self with other, returning the previous value of self. Read more
Source§

fn mem_take(&mut self) -> Self
where Self: Default,

Replaces self with its default value, returning the previous value of self. Read more
Source§

fn mem_swap(&mut self, other: &mut Self)
where Self: Sized,

Swaps the value of self and other without deinitializing either one. Read more
Source§

unsafe fn mem_zeroed<T>() -> T

Available on crate feature unsafe_layout only.
Returns the value of type T represented by the all-zero byte-pattern. Read more
Source§

unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst

Available on crate feature unsafe_layout only.
Returns the value of type T represented by the all-zero byte-pattern. Read more
Source§

fn mem_as_bytes(&self) -> &[u8]
where Self: Sync + Unpin,

Available on crate feature unsafe_slice only.
View a Sync + Unpin self as &[u8]. Read more
Source§

fn mem_as_bytes_mut(&mut self) -> &mut [u8]
where Self: Sync + Unpin,

Available on crate feature unsafe_slice only.
View a Sync + Unpin self as &mut [u8]. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<S> FromSample<S> for S

§

fn from_sample_(s: S) -> S

Source§

impl<T> Hook for T

Source§

fn hook_ref<F>(self, f: F) -> Self
where F: FnOnce(&Self),

Applies a function which takes the parameter by shared reference, and then returns the (possibly) modified owned value. Read more
Source§

fn hook_mut<F>(self, f: F) -> Self
where F: FnOnce(&mut Self),

Applies a function which takes the parameter by exclusive reference, and then returns the (possibly) modified owned value. Read more
§

impl<T> Instrument for T

§

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

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

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

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

§

fn into_sample(self) -> T

§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

§

fn to_sample_(self) -> U

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.
§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,