summaryrefslogtreecommitdiffstats
path: root/src/settings.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/settings.rs')
-rw-r--r--src/settings.rs64
1 files changed, 51 insertions, 13 deletions
diff --git a/src/settings.rs b/src/settings.rs
index 32ec583c..c82a1354 100644
--- a/src/settings.rs
+++ b/src/settings.rs
@@ -2,41 +2,79 @@
use crate::window;
/// The settings of an application.
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
-pub struct Settings {
+#[derive(Debug, Clone)]
+pub struct Settings<Flags> {
/// The window settings.
///
/// They will be ignored on the Web.
- ///
- /// [`Window`]: struct.Window.html
pub window: window::Settings,
+ /// The data needed to initialize an [`Application`].
+ ///
+ /// [`Application`]: crate::Application
+ pub flags: Flags,
+
/// The bytes of the font that will be used by default.
///
/// If `None` is provided, a default system font will be chosen.
// TODO: Add `name` for web compatibility
pub default_font: Option<&'static [u8]>,
+ /// The text size that will be used by default.
+ ///
+ /// The default value is 20.
+ pub default_text_size: u16,
+
/// If set to true, the renderer will try to perform antialiasing for some
/// primitives.
///
/// Enabling it can produce a smoother result in some widgets, like the
- /// `Canvas`, at a performance cost.
+ /// [`Canvas`], at a performance cost.
///
/// By default, it is disabled.
+ ///
+ /// [`Canvas`]: crate::widget::Canvas
pub antialiasing: bool,
}
+impl<Flags> Settings<Flags> {
+ /// Initialize [`Application`] settings using the given data.
+ ///
+ /// [`Application`]: crate::Application
+ pub fn with_flags(flags: Flags) -> Self {
+ let default_settings = Settings::<()>::default();
+
+ Self {
+ flags,
+ antialiasing: default_settings.antialiasing,
+ default_font: default_settings.default_font,
+ default_text_size: default_settings.default_text_size,
+ window: default_settings.window,
+ }
+ }
+}
+
+impl<Flags> Default for Settings<Flags>
+where
+ Flags: Default,
+{
+ fn default() -> Self {
+ Self {
+ flags: Default::default(),
+ antialiasing: Default::default(),
+ default_font: Default::default(),
+ default_text_size: 20,
+ window: Default::default(),
+ }
+ }
+}
+
#[cfg(not(target_arch = "wasm32"))]
-impl From<Settings> for iced_winit::Settings {
- fn from(settings: Settings) -> iced_winit::Settings {
+impl<Flags> From<Settings<Flags>> for iced_winit::Settings<Flags> {
+ fn from(settings: Settings<Flags>) -> iced_winit::Settings<Flags> {
iced_winit::Settings {
- window: iced_winit::settings::Window {
- size: settings.window.size,
- resizable: settings.window.resizable,
- decorations: settings.window.decorations,
- platform_specific: Default::default(),
- },
+ window: settings.window.into(),
+ flags: settings.flags,
}
}
}