Struct Window
pub struct Window { /* private fields */ }
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
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
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>
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> ⓘ
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> ⓘ
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> ⓘ
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> ⓘ
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
pub fn has_input_focus(&self) -> bool
Does the window have input focus?
pub fn has_input_grabbed(&self) -> bool
pub fn has_input_grabbed(&self) -> bool
Has the window grabbed input focus?
pub fn has_mouse_focus(&self) -> bool
pub fn has_mouse_focus(&self) -> bool
Does the window have mouse focus?
pub fn is_maximized(&self) -> bool
pub fn is_maximized(&self) -> bool
Is the window maximized?
pub fn is_minimized(&self) -> bool
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) -> boolwhere
S: AsRef<SurfaceRef>,
pub fn set_icon<S>(&mut self, icon: S) -> boolwhere
S: AsRef<SurfaceRef>,
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> ⓘ
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> ⓘ
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> ⓘ
pub fn mouse_rect(&self) -> Option<Rect> ⓘ
pub fn set_opacity(&mut self, opacity: f32) -> Result<(), Error> ⓘ
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.
Trait Implementations§
§impl From<WindowContext> for Window
impl From<WindowContext> for Window
§fn from(context: WindowContext) -> Window
fn from(context: WindowContext) -> Window
§impl RenderTarget for Window
impl RenderTarget for Window
type Context = WindowContext
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> 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
Source§impl<T> ByteSized for T
impl<T> ByteSized for T
Source§const BYTE_ALIGN: usize = _
const BYTE_ALIGN: usize = _
Source§fn byte_align(&self) -> usize
fn byte_align(&self) -> usize
Source§fn ptr_size_ratio(&self) -> [usize; 2]
fn ptr_size_ratio(&self) -> [usize; 2]
Source§impl<T, R> Chain<R> for Twhere
T: ?Sized,
impl<T, R> Chain<R> for Twhere
T: ?Sized,
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> ExtAny for T
impl<T> ExtAny for T
Source§fn type_hash_with<H: Hasher>(&self, hasher: H) -> u64
fn type_hash_with<H: Hasher>(&self, hasher: H) -> u64
TypeId
of Self
using a custom hasher.Source§fn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
fn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
Source§impl<T> ExtMem for Twhere
T: ?Sized,
impl<T> ExtMem for Twhere
T: ?Sized,
Source§const NEEDS_DROP: bool = _
const NEEDS_DROP: bool = _
Source§fn mem_align_of<T>() -> usize
fn mem_align_of<T>() -> usize
Source§fn mem_align_of_val(&self) -> usize
fn mem_align_of_val(&self) -> usize
Source§fn mem_size_of<T>() -> usize
fn mem_size_of<T>() -> usize
Source§fn mem_size_of_val(&self) -> usize
fn mem_size_of_val(&self) -> usize
Source§fn mem_needs_drop(&self) -> bool
fn mem_needs_drop(&self) -> bool
true
if dropping values of this type matters. Read moreSource§fn mem_forget(self)where
Self: Sized,
fn mem_forget(self)where
Self: Sized,
self
without running its destructor. Read moreSource§fn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
fn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
Source§unsafe fn mem_zeroed<T>() -> T
unsafe fn mem_zeroed<T>() -> T
unsafe_layout
only.T
represented by the all-zero byte-pattern. Read moreSource§unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst
unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst
unsafe_layout
only.T
represented by the all-zero byte-pattern. Read moreSource§fn mem_as_bytes(&self) -> &[u8] ⓘ
fn mem_as_bytes(&self) -> &[u8] ⓘ
unsafe_slice
only.§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> Hook for T
impl<T> Hook for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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