Add documentation comments to bevy_window (#4333)
# Objective - Add documentation comments and `#![warn(missing_docs)]` to `bevy_window`. - Part of #3492
This commit is contained in:
parent
ab72c8368f
commit
14ed3b30cb
@ -1,39 +1,81 @@
|
||||
/// The icon to display for a window's cursor
|
||||
/// The icon to display for a window's cursor.
|
||||
///
|
||||
/// Examples of all of these cursors can be found [here](https://www.w3schools.com/cssref/playit.asp?filename=playcss_cursor).
|
||||
/// This `enum` is simply a copy of a similar `enum` found in [`winit`](https://docs.rs/winit/latest/winit/window/enum.CursorIcon.html).
|
||||
/// `winit`, in turn, mostly copied cursor types avilable in the browser.
|
||||
#[derive(Debug, Hash, PartialEq, Eq, Clone, Copy)]
|
||||
pub enum CursorIcon {
|
||||
/// The platform-dependent default cursor.
|
||||
Default,
|
||||
/// A simple crosshair.
|
||||
Crosshair,
|
||||
/// A hand (often used to indicate links in web browsers).
|
||||
Hand,
|
||||
/// An arrow. This is the default cursor on most systems.
|
||||
Arrow,
|
||||
/// Indicates something is to be moved.
|
||||
Move,
|
||||
/// Indicates text that may be selected or edited.
|
||||
Text,
|
||||
/// Program busy indicator.
|
||||
Wait,
|
||||
/// Help indicator (often rendered as a "?")
|
||||
Help,
|
||||
/// Progress indicator. Shows that processing is being done.
|
||||
///
|
||||
/// But in contrast with "Wait" the user may still interact with the program.
|
||||
/// Often rendered as a spinning beach ball, or an arrow with a watch or hourglass.
|
||||
Progress,
|
||||
/// Cursor showing that something cannot be done.
|
||||
NotAllowed,
|
||||
/// Indicates that a context menu is available.
|
||||
ContextMenu,
|
||||
/// Indicates that a cell (or set of cells) may be selected.
|
||||
Cell,
|
||||
/// Indicates vertical text that may be selected or edited.
|
||||
VerticalText,
|
||||
/// Indicates that an alias of something is to be created.
|
||||
Alias,
|
||||
/// Indicates something is to be copied.
|
||||
Copy,
|
||||
/// Indicates that the dragged item cannot be dropped here.
|
||||
NoDrop,
|
||||
/// Indicates that something can be grabbed.
|
||||
Grab,
|
||||
/// Indicates that something is grabbed.
|
||||
Grabbing,
|
||||
/// Indicates that the user can scroll by dragging the mouse.
|
||||
AllScroll,
|
||||
/// Indicates that the user can zoom in.
|
||||
ZoomIn,
|
||||
/// Indicates that the user can zoom out.
|
||||
ZoomOut,
|
||||
/// Indicates that an edge of a box is to be moved right (east).
|
||||
EResize,
|
||||
/// Indicates that an edge of a box is to be moved up (north).
|
||||
NResize,
|
||||
/// Indicates that an edge of a box is to be moved up and right (north/east).
|
||||
NeResize,
|
||||
/// indicates that an edge of a box is to be moved up and left (north/west).
|
||||
NwResize,
|
||||
/// Indicates that an edge of a box is to be moved down (south).
|
||||
SResize,
|
||||
/// The cursor indicates that an edge of a box is to be moved down and right (south/east).
|
||||
SeResize,
|
||||
/// The cursor indicates that an edge of a box is to be moved down and left (south/west).
|
||||
SwResize,
|
||||
/// Indicates that an edge of a box is to be moved left (west).
|
||||
WResize,
|
||||
/// Indicates a bidirectional resize cursor.
|
||||
EwResize,
|
||||
/// Indicates a bidirectional resize cursor.
|
||||
NsResize,
|
||||
/// Indicates a bidirectional resize cursor.
|
||||
NeswResize,
|
||||
/// Indicates a bidirectional resize cursor.
|
||||
NwseResize,
|
||||
/// Indicates that a column can be resized horizontally.
|
||||
ColResize,
|
||||
/// Indicates that the row can be resized vertically.
|
||||
RowResize,
|
||||
}
|
||||
|
||||
@ -3,13 +3,13 @@ use std::path::PathBuf;
|
||||
use super::{WindowDescriptor, WindowId};
|
||||
use bevy_math::{IVec2, Vec2};
|
||||
|
||||
/// A window event that is sent whenever a windows logical size has changed
|
||||
/// A window event that is sent whenever a window's logical size has changed.
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct WindowResized {
|
||||
pub id: WindowId,
|
||||
/// The new logical width of the window
|
||||
/// The new logical width of the window.
|
||||
pub width: f32,
|
||||
/// The new logical height of the window
|
||||
/// The new logical height of the window.
|
||||
pub height: f32,
|
||||
}
|
||||
|
||||
@ -58,18 +58,18 @@ pub struct WindowCloseRequested {
|
||||
pub struct WindowClosed {
|
||||
pub id: WindowId,
|
||||
}
|
||||
|
||||
/// An event that is sent whenenver the user's cursor moves.
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct CursorMoved {
|
||||
pub id: WindowId,
|
||||
pub position: Vec2,
|
||||
}
|
||||
|
||||
/// An event that is sent whenever the user's cursor enters a window.
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct CursorEntered {
|
||||
pub id: WindowId,
|
||||
}
|
||||
|
||||
/// An event that is sent whenever the user's cursor leaves a window.
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct CursorLeft {
|
||||
pub id: WindowId,
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
#[warn(missing_docs)]
|
||||
mod cursor;
|
||||
mod event;
|
||||
mod raw_window_handle;
|
||||
@ -23,6 +24,7 @@ pub mod prelude {
|
||||
use bevy_app::prelude::*;
|
||||
use bevy_ecs::{event::Events, schedule::SystemLabel};
|
||||
|
||||
/// A [`Plugin`] that defines an interface for windowing support in Bevy.
|
||||
pub struct WindowPlugin {
|
||||
/// Whether to create a window when added.
|
||||
///
|
||||
@ -30,6 +32,7 @@ pub struct WindowPlugin {
|
||||
/// due to [`exit_on_all_closed`].
|
||||
pub add_primary_window: bool,
|
||||
/// Whether to exit the app when there are no open windows.
|
||||
///
|
||||
/// If disabling this, ensure that you send the [`bevy_app::AppExit`]
|
||||
/// event when the app should exit. If this does not occur, you will
|
||||
/// create 'headless' processes (processes without windows), which may
|
||||
@ -38,7 +41,7 @@ pub struct WindowPlugin {
|
||||
/// If true, this plugin will add [`exit_on_all_closed`] to [`CoreStage::Update`].
|
||||
pub exit_on_all_closed: bool,
|
||||
/// Whether to close windows when they are requested to be closed (i.e.
|
||||
/// when the close button is pressed)
|
||||
/// when the close button is pressed).
|
||||
///
|
||||
/// If true, this plugin will add [`close_when_requested`] to [`CoreStage::Update`].
|
||||
/// If this system (or a replacement) is not running, the close button will have no effect.
|
||||
|
||||
@ -3,6 +3,7 @@ use bevy_utils::{tracing::warn, Uuid};
|
||||
use raw_window_handle::RawWindowHandle;
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
|
||||
/// A unique ID for a [`Window`].
|
||||
pub struct WindowId(Uuid);
|
||||
|
||||
/// Presentation mode for a window.
|
||||
@ -39,14 +40,15 @@ pub enum PresentMode {
|
||||
}
|
||||
|
||||
impl WindowId {
|
||||
/// Creates a new [`WindowId`].
|
||||
pub fn new() -> Self {
|
||||
WindowId(Uuid::new_v4())
|
||||
}
|
||||
|
||||
/// The [`WindowId`] for the primary window.
|
||||
pub fn primary() -> Self {
|
||||
WindowId(Uuid::from_u128(0))
|
||||
}
|
||||
|
||||
/// Get whether or not this [`WindowId`] is for the primary window.
|
||||
pub fn is_primary(&self) -> bool {
|
||||
*self == WindowId::primary()
|
||||
}
|
||||
@ -70,6 +72,7 @@ impl Default for WindowId {
|
||||
}
|
||||
|
||||
/// The size limits on a window.
|
||||
///
|
||||
/// These values are measured in logical pixels, so the user's
|
||||
/// scale factor does affect the size limits on the window.
|
||||
/// Please note that if the window is resizable, then when the window is
|
||||
@ -130,6 +133,8 @@ impl WindowResizeConstraints {
|
||||
|
||||
/// An operating system window that can present content and receive user input.
|
||||
///
|
||||
/// To create a window, use a [`EventWriter<CreateWindow>`](`crate::CreateWindow`).
|
||||
///
|
||||
/// ## Window Sizes
|
||||
///
|
||||
/// There are three sizes associated with a window. The physical size which is
|
||||
@ -143,6 +148,25 @@ impl WindowResizeConstraints {
|
||||
/// requested size due to operating system limits on the window size, or the
|
||||
/// quantization of the logical size when converting the physical size to the
|
||||
/// logical size through the scaling factor.
|
||||
///
|
||||
/// ## Accessing a `Window` from a system
|
||||
///
|
||||
/// To access a `Window` from a system, use [`bevy_ecs::change_detection::ResMut`]`<`[`crate::Windows`]`>`.
|
||||
///
|
||||
/// ### Example
|
||||
/// ```no_run
|
||||
/// # use bevy_app::App;
|
||||
/// # use bevy_window::Windows;
|
||||
/// # use bevy_ecs::change_detection::ResMut;
|
||||
/// # fn main(){
|
||||
/// # App::new().add_system(access_window_system).run();
|
||||
/// # }
|
||||
/// fn access_window_system(mut windows: ResMut<Windows>){
|
||||
/// for mut window in windows.iter_mut(){
|
||||
/// window.set_title(String::from("Yay, I'm a window!"));
|
||||
/// }
|
||||
/// }
|
||||
/// ```
|
||||
#[derive(Debug)]
|
||||
pub struct Window {
|
||||
id: WindowId,
|
||||
@ -169,74 +193,96 @@ pub struct Window {
|
||||
fit_canvas_to_parent: bool,
|
||||
command_queue: Vec<WindowCommand>,
|
||||
}
|
||||
|
||||
/// A command to be sent to a window.
|
||||
///
|
||||
/// Bevy apps don't interact with this `enum` directly. Instead, they should use the methods on [`Window`].
|
||||
/// This `enum` is meant for authors of windowing plugins. See the documentation on [`crate::WindowPlugin`] for more information.
|
||||
#[derive(Debug)]
|
||||
pub enum WindowCommand {
|
||||
/// Set the window's [`WindowMode`].
|
||||
SetWindowMode {
|
||||
mode: WindowMode,
|
||||
resolution: (u32, u32),
|
||||
},
|
||||
/// Set the window's title.
|
||||
SetTitle {
|
||||
title: String,
|
||||
},
|
||||
/// Set the window's scale factor.
|
||||
SetScaleFactor {
|
||||
scale_factor: f64,
|
||||
},
|
||||
/// Set the window's resolution.
|
||||
SetResolution {
|
||||
logical_resolution: (f32, f32),
|
||||
scale_factor: f64,
|
||||
},
|
||||
/// Set the window's [`PresentMode`].
|
||||
SetPresentMode {
|
||||
present_mode: PresentMode,
|
||||
},
|
||||
/// Set whether or not the window is resizable.
|
||||
SetResizable {
|
||||
resizable: bool,
|
||||
},
|
||||
/// Set whether or not the window has decorations.
|
||||
///
|
||||
/// Examples of decorations include the close, full screen, and minimize buttons
|
||||
SetDecorations {
|
||||
decorations: bool,
|
||||
},
|
||||
/// Set whether or not the cursor's postition is locked.
|
||||
SetCursorLockMode {
|
||||
locked: bool,
|
||||
},
|
||||
/// Set the cursor's [`CursorIcon`].
|
||||
SetCursorIcon {
|
||||
icon: CursorIcon,
|
||||
},
|
||||
/// Set whether or not the cursor is visible.
|
||||
SetCursorVisibility {
|
||||
visible: bool,
|
||||
},
|
||||
/// Set the cursor's position.
|
||||
SetCursorPosition {
|
||||
position: Vec2,
|
||||
},
|
||||
/// Set whether or not the window is maxizimed.
|
||||
SetMaximized {
|
||||
maximized: bool,
|
||||
},
|
||||
/// Set whether or not the window is minimized.
|
||||
SetMinimized {
|
||||
minimized: bool,
|
||||
},
|
||||
/// Set the window's position on the screen.
|
||||
SetPosition {
|
||||
position: IVec2,
|
||||
},
|
||||
/// Set the window's [`WindowResizeConstraints`]
|
||||
SetResizeConstraints {
|
||||
resize_constraints: WindowResizeConstraints,
|
||||
},
|
||||
Close,
|
||||
}
|
||||
|
||||
/// Defines the way a window is displayed
|
||||
/// Defines the way a window is displayed.
|
||||
#[derive(Debug, Clone, Copy, PartialEq)]
|
||||
pub enum WindowMode {
|
||||
/// Creates a window that uses the given size
|
||||
/// Creates a window that uses the given size.
|
||||
Windowed,
|
||||
/// Creates a borderless window that uses the full size of the screen
|
||||
/// Creates a borderless window that uses the full size of the screen.
|
||||
BorderlessFullscreen,
|
||||
/// Creates a fullscreen window that will render at desktop resolution. The app will use the closest supported size
|
||||
/// from the given size and scale it to fit the screen.
|
||||
/// Creates a fullscreen window that will render at desktop resolution.
|
||||
///
|
||||
/// The app will use the closest supported size from the given size and scale it to fit the screen.
|
||||
SizedFullscreen,
|
||||
/// Creates a fullscreen window that uses the maximum supported size
|
||||
/// Creates a fullscreen window that uses the maximum supported size.
|
||||
Fullscreen,
|
||||
}
|
||||
|
||||
impl Window {
|
||||
/// Creates a new [`Window`].
|
||||
pub fn new(
|
||||
id: WindowId,
|
||||
window_descriptor: &WindowDescriptor,
|
||||
@ -272,7 +318,7 @@ impl Window {
|
||||
command_queue: Vec::new(),
|
||||
}
|
||||
}
|
||||
|
||||
/// Get the window's [`WindowId`].
|
||||
#[inline]
|
||||
pub fn id(&self) -> WindowId {
|
||||
self.id
|
||||
@ -333,7 +379,7 @@ impl Window {
|
||||
pub fn position(&self) -> Option<IVec2> {
|
||||
self.position
|
||||
}
|
||||
|
||||
/// Set whether or not the window is maximized.
|
||||
#[inline]
|
||||
pub fn set_maximized(&mut self, maximized: bool) {
|
||||
self.command_queue
|
||||
@ -393,7 +439,7 @@ impl Window {
|
||||
});
|
||||
}
|
||||
|
||||
/// Override the os-reported scaling factor
|
||||
/// Override the os-reported scaling factor.
|
||||
#[allow(clippy::float_cmp)]
|
||||
pub fn set_scale_factor_override(&mut self, scale_factor: Option<f64>) {
|
||||
if self.scale_factor_override == scale_factor {
|
||||
@ -438,22 +484,25 @@ impl Window {
|
||||
}
|
||||
|
||||
/// The window scale factor as reported by the window backend.
|
||||
///
|
||||
/// This value is unaffected by [`scale_factor_override`](Window::scale_factor_override).
|
||||
#[inline]
|
||||
pub fn backend_scale_factor(&self) -> f64 {
|
||||
self.backend_scale_factor
|
||||
}
|
||||
|
||||
/// The scale factor set with [`set_scale_factor_override`](Window::set_scale_factor_override).
|
||||
///
|
||||
/// This value may be different from the scale factor reported by the window backend.
|
||||
#[inline]
|
||||
pub fn scale_factor_override(&self) -> Option<f64> {
|
||||
self.scale_factor_override
|
||||
}
|
||||
|
||||
/// Get the window's title.
|
||||
#[inline]
|
||||
pub fn title(&self) -> &str {
|
||||
&self.title
|
||||
}
|
||||
|
||||
/// Set the window's title.
|
||||
pub fn set_title(&mut self, title: String) {
|
||||
self.title = title.to_string();
|
||||
self.command_queue.push(WindowCommand::SetTitle { title });
|
||||
@ -461,68 +510,106 @@ impl Window {
|
||||
|
||||
#[inline]
|
||||
#[doc(alias = "vsync")]
|
||||
/// Get the window's [`PresentMode`].
|
||||
pub fn present_mode(&self) -> PresentMode {
|
||||
self.present_mode
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[doc(alias = "set_vsync")]
|
||||
/// Set the window's [`PresentMode`].
|
||||
pub fn set_present_mode(&mut self, present_mode: PresentMode) {
|
||||
self.present_mode = present_mode;
|
||||
self.command_queue
|
||||
.push(WindowCommand::SetPresentMode { present_mode });
|
||||
}
|
||||
|
||||
/// Get whether or not the window is resizable.
|
||||
#[inline]
|
||||
pub fn resizable(&self) -> bool {
|
||||
self.resizable
|
||||
}
|
||||
|
||||
/// Set whether or not the window is resizable.
|
||||
pub fn set_resizable(&mut self, resizable: bool) {
|
||||
self.resizable = resizable;
|
||||
self.command_queue
|
||||
.push(WindowCommand::SetResizable { resizable });
|
||||
}
|
||||
|
||||
/// Get whether or not decorations are enabled.
|
||||
///
|
||||
/// (Decorations are the minimize, maximize, and close buttons on desktop apps)
|
||||
///
|
||||
/// ## Platform-specific
|
||||
///
|
||||
/// **`iOS`**, **`Android`**, and the **`Web`** do not have decorations.
|
||||
#[inline]
|
||||
pub fn decorations(&self) -> bool {
|
||||
self.decorations
|
||||
}
|
||||
|
||||
/// Set whether or not decorations are enabled.
|
||||
///
|
||||
/// (Decorations are the minimize, maximize, and close buttons on desktop apps)
|
||||
///
|
||||
/// ## Platform-specific
|
||||
///
|
||||
/// **`iOS`**, **`Android`**, and the **`Web`** do not have decorations.
|
||||
pub fn set_decorations(&mut self, decorations: bool) {
|
||||
self.decorations = decorations;
|
||||
self.command_queue
|
||||
.push(WindowCommand::SetDecorations { decorations });
|
||||
}
|
||||
|
||||
/// Get whether or not the cursor is locked.
|
||||
///
|
||||
/// ## Platform-specific
|
||||
///
|
||||
/// - **`macOS`** doesn't support cursor lock, but most windowing plugins can emulate it. See [issue #4875](https://github.com/bevyengine/bevy/issues/4875#issuecomment-1153977546) for more information.
|
||||
/// - **`iOS/Android`** don't have cursors.
|
||||
#[inline]
|
||||
pub fn cursor_locked(&self) -> bool {
|
||||
self.cursor_locked
|
||||
}
|
||||
|
||||
/// Set whether or not the cursor is locked.
|
||||
///
|
||||
/// This doesn't hide the cursor. For that, use [`set_cursor_visibility`](Window::set_cursor_visibility)
|
||||
///
|
||||
/// ## Platform-specific
|
||||
///
|
||||
/// - **`macOS`** doesn't support cursor lock, but most windowing plugins can emulate it. See [issue #4875](https://github.com/bevyengine/bevy/issues/4875#issuecomment-1153977546) for more information.
|
||||
/// - **`iOS/Android`** don't have cursors.
|
||||
pub fn set_cursor_lock_mode(&mut self, lock_mode: bool) {
|
||||
self.cursor_locked = lock_mode;
|
||||
self.command_queue
|
||||
.push(WindowCommand::SetCursorLockMode { locked: lock_mode });
|
||||
}
|
||||
|
||||
/// Get whether or not the cursor is visible.
|
||||
///
|
||||
/// ## Platform-specific
|
||||
///
|
||||
/// - **`Windows`**, **`X11`**, and **`Wayland`**: The cursor is hidden only when inside the window. To stop the cursor from leaving the window, use [`set_cursor_lock_mode`](Window::set_cursor_lock_mode).
|
||||
/// - **`macOS`**: The cursor is hidden only when the window is focused.
|
||||
/// - **`iOS`** and **`Android`** do not have cursors
|
||||
#[inline]
|
||||
pub fn cursor_visible(&self) -> bool {
|
||||
self.cursor_visible
|
||||
}
|
||||
|
||||
/// Set whether or not the cursor is visible.
|
||||
///
|
||||
/// ## Platform-specific
|
||||
///
|
||||
/// - **`Windows`**, **`X11`**, and **`Wayland`**: The cursor is hidden only when inside the window. To stop the cursor from leaving the window, use [`set_cursor_lock_mode`](Window::set_cursor_lock_mode).
|
||||
/// - **`macOS`**: The cursor is hidden only when the window is focused.
|
||||
/// - **`iOS`** and **`Android`** do not have cursors
|
||||
pub fn set_cursor_visibility(&mut self, visibile_mode: bool) {
|
||||
self.cursor_visible = visibile_mode;
|
||||
self.command_queue.push(WindowCommand::SetCursorVisibility {
|
||||
visible: visibile_mode,
|
||||
});
|
||||
}
|
||||
|
||||
/// Get the current [`CursorIcon`]
|
||||
#[inline]
|
||||
pub fn cursor_icon(&self) -> CursorIcon {
|
||||
self.cursor_icon
|
||||
}
|
||||
|
||||
/// Set the [`CursorIcon`]
|
||||
pub fn set_cursor_icon(&mut self, icon: CursorIcon) {
|
||||
self.command_queue
|
||||
.push(WindowCommand::SetCursorIcon { icon });
|
||||
@ -541,7 +628,7 @@ impl Window {
|
||||
self.physical_cursor_position
|
||||
.map(|p| (p / self.scale_factor()).as_vec2())
|
||||
}
|
||||
|
||||
/// Set the cursor's position
|
||||
pub fn set_cursor_position(&mut self, position: Vec2) {
|
||||
self.command_queue
|
||||
.push(WindowCommand::SetCursorPosition { position });
|
||||
@ -558,12 +645,12 @@ impl Window {
|
||||
pub fn update_cursor_physical_position_from_backend(&mut self, cursor_position: Option<DVec2>) {
|
||||
self.physical_cursor_position = cursor_position;
|
||||
}
|
||||
|
||||
/// Get the window's [`WindowMode`]
|
||||
#[inline]
|
||||
pub fn mode(&self) -> WindowMode {
|
||||
self.mode
|
||||
}
|
||||
|
||||
/// Set the window's [`WindowMode`]
|
||||
pub fn set_mode(&mut self, mode: WindowMode) {
|
||||
self.mode = mode;
|
||||
self.command_queue.push(WindowCommand::SetWindowMode {
|
||||
@ -571,8 +658,8 @@ impl Window {
|
||||
resolution: (self.physical_width, self.physical_height),
|
||||
});
|
||||
}
|
||||
|
||||
/// Close the operating system window corresponding to this [`Window`].
|
||||
///
|
||||
/// This will also lead to this [`Window`] being removed from the
|
||||
/// [`Windows`] resource.
|
||||
///
|
||||
@ -586,22 +673,25 @@ impl Window {
|
||||
pub fn close(&mut self) {
|
||||
self.command_queue.push(WindowCommand::Close);
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn drain_commands(&mut self) -> impl Iterator<Item = WindowCommand> + '_ {
|
||||
self.command_queue.drain(..)
|
||||
}
|
||||
|
||||
/// Get whether or not the window has focus.
|
||||
///
|
||||
/// A window loses focus when the user switches to another window, and regains focus when the user uses the window again
|
||||
#[inline]
|
||||
pub fn is_focused(&self) -> bool {
|
||||
self.focused
|
||||
}
|
||||
|
||||
/// Get the [`RawWindowHandleWrapper`] corresponding to this window
|
||||
pub fn raw_window_handle(&self) -> RawWindowHandleWrapper {
|
||||
self.raw_window_handle.clone()
|
||||
}
|
||||
|
||||
/// The "html canvas" element selector. If set, this selector will be used to find a matching html canvas element,
|
||||
/// The "html canvas" element selector.
|
||||
///
|
||||
/// If set, this selector will be used to find a matching html canvas element,
|
||||
/// rather than creating a new one.
|
||||
/// Uses the [CSS selector format](https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector).
|
||||
///
|
||||
@ -635,27 +725,36 @@ impl Window {
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct WindowDescriptor {
|
||||
/// The requested logical width of the window's client area.
|
||||
///
|
||||
/// May vary from the physical width due to different pixel density on different monitors.
|
||||
pub width: f32,
|
||||
/// The requested logical height of the window's client area.
|
||||
///
|
||||
/// May vary from the physical height due to different pixel density on different monitors.
|
||||
pub height: f32,
|
||||
/// The position on the screen that the window will be centered at.
|
||||
///
|
||||
/// If set to `None`, some platform-specific position will be chosen.
|
||||
pub position: Option<Vec2>,
|
||||
/// Sets minimum and maximum resize limits.
|
||||
pub resize_constraints: WindowResizeConstraints,
|
||||
/// Overrides the window's ratio of physical pixels to logical pixels.
|
||||
///
|
||||
/// If there are some scaling problems on X11 try to set this option to `Some(1.0)`.
|
||||
pub scale_factor_override: Option<f64>,
|
||||
/// Sets the title that displays on the window top bar, on the system task bar and other OS specific places.
|
||||
///
|
||||
/// ## Platform-specific
|
||||
/// - Web: Unsupported.
|
||||
pub title: String,
|
||||
/// Controls when a frame is presented to the screen.
|
||||
#[doc(alias = "vsync")]
|
||||
/// The window's [`PresentMode`].
|
||||
///
|
||||
/// Used to select whether or not VSync is used
|
||||
pub present_mode: PresentMode,
|
||||
/// Sets whether the window is resizable.
|
||||
///
|
||||
/// ## Platform-specific
|
||||
/// - iOS / Android / Web: Unsupported.
|
||||
pub resizable: bool,
|
||||
@ -668,6 +767,7 @@ pub struct WindowDescriptor {
|
||||
/// Sets the [`WindowMode`](crate::WindowMode).
|
||||
pub mode: WindowMode,
|
||||
/// Sets whether the background of the window should be transparent.
|
||||
///
|
||||
/// ## Platform-specific
|
||||
/// - iOS / Android / Web: Unsupported.
|
||||
/// - macOS X: Not working as expected.
|
||||
@ -675,7 +775,9 @@ pub struct WindowDescriptor {
|
||||
/// macOS X transparent works with winit out of the box, so this issue might be related to: <https://github.com/gfx-rs/wgpu/issues/687>
|
||||
/// Windows 11 is related to <https://github.com/rust-windowing/winit/issues/2082>
|
||||
pub transparent: bool,
|
||||
/// The "html canvas" element selector. If set, this selector will be used to find a matching html canvas element,
|
||||
/// The "html canvas" element selector.
|
||||
///
|
||||
/// If set, this selector will be used to find a matching html canvas element,
|
||||
/// rather than creating a new one.
|
||||
/// Uses the [CSS selector format](https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector).
|
||||
///
|
||||
|
||||
@ -13,7 +13,7 @@ impl Windows {
|
||||
self.windows.insert(window.id(), window);
|
||||
}
|
||||
|
||||
/// Get a reference to the [`Window`] of `id`
|
||||
/// Get a reference to the [`Window`] of `id`.
|
||||
pub fn get(&self, id: WindowId) -> Option<&Window> {
|
||||
self.windows.get(&id)
|
||||
}
|
||||
@ -32,7 +32,7 @@ impl Windows {
|
||||
///
|
||||
/// # Panics
|
||||
///
|
||||
/// Panics if the primary window does not exist in [`Windows`]
|
||||
/// Panics if the primary window does not exist in [`Windows`].
|
||||
pub fn primary(&self) -> &Window {
|
||||
self.get_primary().expect("Primary window does not exist")
|
||||
}
|
||||
@ -46,7 +46,7 @@ impl Windows {
|
||||
///
|
||||
/// # Panics
|
||||
///
|
||||
/// Panics if the primary window does not exist in [`Windows`]
|
||||
/// Panics if the primary window does not exist in [`Windows`].
|
||||
pub fn primary_mut(&mut self) -> &mut Window {
|
||||
self.get_primary_mut()
|
||||
.expect("Primary window does not exist")
|
||||
@ -61,12 +61,12 @@ impl Windows {
|
||||
}
|
||||
}
|
||||
|
||||
/// An iterator over all registered [`Window`]s
|
||||
/// An iterator over all registered [`Window`]s.
|
||||
pub fn iter(&self) -> impl Iterator<Item = &Window> {
|
||||
self.windows.values()
|
||||
}
|
||||
|
||||
/// A mutable iterator over all registered [`Window`]s
|
||||
/// A mutable iterator over all registered [`Window`]s.
|
||||
pub fn iter_mut(&mut self) -> impl Iterator<Item = &mut Window> {
|
||||
self.windows.values_mut()
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user