[go: up one dir, main page]

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 fn from_ref(context: Rc<WindowContext>) -> Window

Create a new Window without taking ownership of the WindowContext

Source

pub fn subsystem(&self) -> &VideoSubsystem

Returns this context’s video system.

Source

pub fn into_canvas(self) -> CanvasBuilder

Initializes a new CanvasBuilder; a convenience method that calls CanvasBuilder::new().

Source

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

Returns the window context.

Source

pub fn id(&self) -> u32

Get the numeric ID of a window.

Source

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

Create an OpenGL context for an OpenGL window, and make it current.

Source

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

Get the currently active OpenGL context.

Source

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

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

Source

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

Set up an OpenGL context for rendering into an OpenGL window.

The context must have been created with a compatible window.

Source

pub fn gl_swap_window(&self)

Update a window with OpenGL rendering.

This is used with double-buffered OpenGL contexts, which are the default. On macOS, make sure you bind 0 to the draw framebuffer before swapping the window, otherwise nothing will happen. If you aren’t using glBindFramebuffer(), this is the default, and you won’t have to do anything extra.

Source

pub fn vulkan_instance_extensions(&self) -> Result<Vec<&'static str>, String>

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, String>

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 display_index(&self) -> Result<i32, String>

Get the index of the display associated with a window.

Source

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

Set the display mode to use when a window is visible at fullscreen.

This only affects the display mode used when the window is fullscreen. To change the window size when the window is not fullscreen, use set_size.

Source

pub fn display_mode(&self) -> Result<DisplayMode, String>

Query the display mode to use when a window is visible at fullscreen.

Source

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

Get the raw ICC profile data for the screen the window is currently on.

Source

pub fn window_pixel_format(&self) -> PixelFormatEnum

Get the pixel format associated with the window.

Source

pub fn window_flags(&self) -> u32

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 is_always_on_top(&self) -> bool

Is the window always on top?

Source

pub fn set_resizable(&mut self, resizable: bool)

Set the user-resizable state of a window - true to allow resizing and false to forbid.

Source

pub fn set_window_shape_alpha<S: AsRef<SurfaceRef>>( &mut self, shape: S, binarization_cutoff: u8, ) -> Result<(), i32>

Set the shape of the window To be effective:

  • shaped must have been set using windows builder
  • binarizationCutoff: specify the cutoff value for the shape’s alpha channel: At or above that cutoff value, a pixel is visible in the shape. Below that, it’s not part of the shape.
Source

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

Set the title of a window.

Source

pub fn title(&self) -> &str

Get the title of a window.

Source

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

Use this function to set the icon for a window.

§Example:
// requires "--features 'image'"
use sdl2::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)

Source

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

Get the position of a window.

Source

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

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>

Set the size of a window’s client area.

Source

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

Get the size of a window’s client area.

Source

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

Get the size of the window’s underlying drawable dimensions in pixels.

Note that the size could differ from Window::size - that would be if we’re rendering to a high-DPI drawable (Apple’s Retina is an example of that).

Source

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

Get the size of the window’s underlying drawable dimensions in pixels.

Note that the size could differ from Window::size - that would be if we’re rendering to a high-DPI drawable (Apple’s Retina is an example of that).

Source

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

Set the minimum size of a window’s client area.

Source

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

Get the minimum size of a window’s client area.

Source

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

Set the maximum size of a window’s client area.

Source

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

Get the maximum size of a window’s client area.

Source

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

Set the border state of a window - true adds border and false removes it.

The border state of a fullscreen window cannot be changed.

Source

pub fn show(&mut self)

Shows the window that was hidden by hide.

Source

pub fn hide(&mut self)

Hides the window, so it won’t even show in the taskbar.

Source

pub fn raise(&mut self)

Raise a window above other windows and set the input focus.

Source

pub fn maximize(&mut self)

Sets window size to be as large as possible.

Source

pub fn minimize(&mut self)

Minimize a window to an iconic representation (will show up in taskbar).

Source

pub fn restore(&mut self)

Restores the size and position of a minimized or maximized window.

Source

pub fn fullscreen_state(&self) -> FullscreenType

Returns the type of fullscreen that the window is currently using.

Source

pub fn set_fullscreen( &mut self, fullscreen_type: FullscreenType, ) -> Result<(), String>

Sets new fullscreen type for the window.

Source

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

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_grab(&mut self, grabbed: bool)

When input is grabbed, the mouse is confined to the window.

Source

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

Keyboard grab enables capture of system keyboard shortcuts like Alt+Tab or the Meta/Super key. Note that not all system keyboard shortcuts can be captured by applications (one example is Ctrl+Alt+Del on Windows).

If the caller enables a grab while another window is currently grabbed, the other window loses its grab in favor of the caller’s window.

Source

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

Mouse grab confines the mouse cursor to the window.

Source

pub fn grab(&self) -> bool

Returns whether the window was grabbed by set_grab or not.

Source

pub fn keyboard_grab(&self) -> bool

Returns whether the keyboard was grabbed by set_keyboard_grab or not.

Source

pub fn mouse_grab(&self) -> bool

Returns whether the mouse was grabbed by set_mouse_grab or not.

Source

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

Confines the cursor to the specified area of a window. Note that this does NOT grab the cursor, it only defines the area a cursor is restricted to when the window has mouse focus.

Source

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

Returns Rect to which the mouse is currently confined by set_mouse_rect function.

Returns None if mouse was not confined.

Source

pub fn set_brightness(&mut self, brightness: f64) -> Result<(), String>

Set the brightness (gamma multiplier) for a given window’s display.

Despite the name and signature, this method sets the brightness of the entire display, not an individual window. A window is considered to be owned by the display that contains the window’s center pixel. So, if the window was moved to another display, it will not retain set brightness.

Source

pub fn brightness(&self) -> f64

Source

pub fn set_gamma_ramp<'a, 'b, 'c, R, G, B>( &mut self, red: R, green: G, blue: B, ) -> Result<(), String>
where R: Into<Option<&'a [u16; 256]>>, G: Into<Option<&'b [u16; 256]>>, B: Into<Option<&'c [u16; 256]>>,

Set the gamma ramp for the display that owns a given window. A window is considered to be owned by the display that contains the window’s center pixel.

Set the gamma translation table for the red, green, and blue channels of the video hardware. Each table is an array of 256 16-bit quantities, representing a mapping between the input and output for that channel.

Source

pub fn gamma_ramp(&self) -> Result<(Vec<u16>, Vec<u16>, Vec<u16>), String>

Get the gamma ramp in form of 3 vectors for a given window’s display.

This method retrieves the gamma ramp of the entire display, not an individual window. A window is considered to be owned by the display that contains the window’s center pixel.

Source

pub fn gamma_ramp_arrays(&self) -> Result<[[u16; 256]; 3], String>

Get the gamma ramp in form of 3 arrays for a given window’s display.

Despite the name and signature, this method retrieves the gamma ramp of the entire display, not an individual window. A window is considered to be owned by the display that contains the window’s center pixel.

Source

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

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, String>

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<(), String>

Requests a window to demand attention from the user.

Source

pub fn set_always_on_top(&mut self, on_top: bool)

Makes window appear on top of others.

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 CanvasBuilder

Source§

fn from(window: Window) -> CanvasBuilder

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