Window

Struct Window 

Source
pub struct Window { /* private fields */ }
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§

Source§

impl Window

Source

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

Source

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

Source

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

Create a new Window without taking ownership of the WindowContext

Source

pub fn subsystem(&self) -> &VideoSubsystem

Source

pub fn into_canvas(self) -> WindowCanvas

Initializes a new `WindowCanvas’;

Source

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

Source

pub fn id(&self) -> u32

Source

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

Source

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

Source

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

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

Source

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

Source

pub fn gl_swap_window(&self)

Source

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.

Source

pub fn vulkan_create_surface( &self, instance: VkInstance, ) -> Result<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.

Source

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

Source

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

Source

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

Source

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

Source

pub fn window_pixel_format(&self) -> PixelFormat

Source

pub fn window_flags(&self) -> SDL_WindowFlags

Source

pub fn has_input_focus(&self) -> bool

Does the window have input focus?

Source

pub fn has_input_grabbed(&self) -> bool

Has the window grabbed input focus?

Source

pub fn has_mouse_focus(&self) -> bool

Does the window have mouse focus?

Source

pub fn is_maximized(&self) -> bool

Is the window maximized?

Source

pub fn is_minimized(&self) -> bool

Is the window minimized?

Source

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

Source

pub fn title(&self) -> &str

Source

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

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);
Source

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

Source

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

Source

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.

Source

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

Source

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

Source

pub fn display_scale(&self) -> f32

This is a combination of the window pixel density and the display content scale, and is the expected scale for displaying content in this window. For example, if a 3840x2160 window had a display scale of 2.0, the user expects the content to take twice as many pixels and be the same physical size as if it were being displayed in a 1920x1080 window with a display scale of 1.0.

Conceptually this value corresponds to the scale display setting, and is updated when that setting is changed, or the window moves to a display with a different scale setting.

Source

pub fn sync(&self) -> bool

Block until any pending window state is finalized.

On asynchronous windowing systems, this acts as a synchronization barrier for pending window state. It will attempt to wait until any pending window state has been applied and is guaranteed to return within finite time. Note that for how long it can potentially block depends on the underlying window system, as window state changes may involve somewhat lengthy animations that must complete before the window is in its final requested state.

On windowing systems where changes are immediate, this does nothing.

Returns true on success or false if the operation timed out before the window was in the requested state.

This function should only be called on the main thread.

Source

pub fn pixel_density(&self) -> f32

Source

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

Source

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

Source

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

Source

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

Source

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

Source

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

Source

pub fn show(&mut self) -> bool

Source

pub fn hide(&mut self) -> bool

Source

pub fn raise(&mut self) -> bool

Source

pub fn maximize(&mut self) -> bool

Source

pub fn minimize(&mut self) -> bool

Source

pub fn restore(&mut self) -> bool

Source

pub fn fullscreen_state(&self) -> FullscreenType

Source

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

Source

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 !

Source

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

Source

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

Source

pub fn keyboard_grab(&self) -> bool

Source

pub fn mouse_grab(&self) -> bool

Source

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

Source

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

Source

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.

Source

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.

Source

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

Requests a window to demand attention from the user.

Trait Implementations§

Source§

impl Clone for Window

Source§

fn clone(&self) -> Window

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

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

Performs copy-assignment from source. Read more
Source§

impl From<Window> for WindowCanvas

Source§

fn from(window: Window) -> WindowCanvas

Converts to this type from the input type.
Source§

impl From<WindowContext> for Window

Source§

fn from(context: WindowContext) -> Window

Converts to this type from the input type.
Source§

impl HasDisplayHandle for Window

Source§

fn display_handle(&self) -> Result<DisplayHandle<'_>, HandleError>

Get a handle to the display controller of the windowing system.
Source§

impl HasWindowHandle for Window

Source§

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

Get a handle to the window.
Source§

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> CloneToUninit for T
where T: Clone,

Source§

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

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> HasRawDisplayHandle for T
where T: HasDisplayHandle + ?Sized,

Source§

fn raw_display_handle(&self) -> Result<RawDisplayHandle, HandleError>

👎Deprecated: Use HasDisplayHandle instead
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, 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> 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
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.