move window settings to iced_native

This commit is contained in:
Richard 2022-10-19 22:56:00 -03:00 committed by bungoboingo
parent a386788b67
commit 1bc0c480f9
11 changed files with 62 additions and 69 deletions

View file

@ -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
View 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,
}

View 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
}
}

View 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,
}
}
}