move window settings to iced_native
This commit is contained in:
parent
a386788b67
commit
1bc0c480f9
11 changed files with 62 additions and 69 deletions
|
|
@ -1,12 +1,16 @@
|
|||
//! Build window-based GUI applications.
|
||||
mod action;
|
||||
mod event;
|
||||
mod icon;
|
||||
mod id;
|
||||
mod mode;
|
||||
mod user_attention;
|
||||
|
||||
pub use action::Action;
|
||||
pub use event::Event;
|
||||
pub use icon::Icon;
|
||||
pub use id::Id;
|
||||
pub use mode::Mode;
|
||||
pub use user_attention::UserAttention;
|
||||
pub use position::Position;
|
||||
pub use settings::Settings;
|
||||
|
|
|
|||
12
native/src/window/icon.rs
Normal file
12
native/src/window/icon.rs
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
//! Attach an icon to the window of your application.
|
||||
|
||||
/// The icon of a window.
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Icon {
|
||||
/// TODO(derezzedex)
|
||||
pub rgba: Vec<u8>,
|
||||
/// TODO(derezzedex)
|
||||
pub width: u32,
|
||||
/// TODO(derezzedex)
|
||||
pub height: u32,
|
||||
}
|
||||
22
native/src/window/position.rs
Normal file
22
native/src/window/position.rs
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
/// The position of a window in a given screen.
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub enum Position {
|
||||
/// The platform-specific default position for a new window.
|
||||
Default,
|
||||
/// The window is completely centered on the screen.
|
||||
Centered,
|
||||
/// The window is positioned with specific coordinates: `(X, Y)`.
|
||||
///
|
||||
/// When the decorations of the window are enabled, Windows 10 will add some
|
||||
/// invisible padding to the window. This padding gets included in the
|
||||
/// position. So if you have decorations enabled and want the window to be
|
||||
/// at (0, 0) you would have to set the position to
|
||||
/// `(PADDING_X, PADDING_Y)`.
|
||||
Specific(i32, i32),
|
||||
}
|
||||
|
||||
impl Default for Position {
|
||||
fn default() -> Self {
|
||||
Self::Default
|
||||
}
|
||||
}
|
||||
52
native/src/window/settings.rs
Normal file
52
native/src/window/settings.rs
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
use crate::window::{Icon, Position};
|
||||
|
||||
/// The window settings of an application.
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Settings {
|
||||
/// The initial size of the window.
|
||||
pub size: (u32, u32),
|
||||
|
||||
/// The initial position of the window.
|
||||
pub position: Position,
|
||||
|
||||
/// The minimum size of the window.
|
||||
pub min_size: Option<(u32, u32)>,
|
||||
|
||||
/// The maximum size of the window.
|
||||
pub max_size: Option<(u32, u32)>,
|
||||
|
||||
/// Whether the window should be visible or not.
|
||||
pub visible: bool,
|
||||
|
||||
/// Whether the window should be resizable or not.
|
||||
pub resizable: bool,
|
||||
|
||||
/// Whether the window should have a border, a title bar, etc. or not.
|
||||
pub decorations: bool,
|
||||
|
||||
/// Whether the window should be transparent.
|
||||
pub transparent: bool,
|
||||
|
||||
/// Whether the window will always be on top of other windows.
|
||||
pub always_on_top: bool,
|
||||
|
||||
/// The icon of the window.
|
||||
pub icon: Option<Icon>,
|
||||
}
|
||||
|
||||
impl Default for Settings {
|
||||
fn default() -> Settings {
|
||||
Settings {
|
||||
size: (1024, 768),
|
||||
position: Position::default(),
|
||||
min_size: None,
|
||||
max_size: None,
|
||||
visible: true,
|
||||
resizable: true,
|
||||
decorations: true,
|
||||
transparent: false,
|
||||
always_on_top: false,
|
||||
icon: None,
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue