iced_wgpu/
settings.rs
1use crate::core::{Font, Pixels};
3use crate::graphics::{self, Antialiasing};
4
5#[derive(Debug, Clone, Copy, PartialEq)]
9pub struct Settings {
10 pub present_mode: wgpu::PresentMode,
14
15 pub backends: wgpu::Backends,
17
18 pub default_font: Font,
20
21 pub default_text_size: Pixels,
25
26 pub antialiasing: Option<Antialiasing>,
30}
31
32impl Default for Settings {
33 fn default() -> Settings {
34 Settings {
35 present_mode: wgpu::PresentMode::AutoVsync,
36 backends: wgpu::Backends::all(),
37 default_font: Font::default(),
38 default_text_size: Pixels(16.0),
39 antialiasing: None,
40 }
41 }
42}
43
44impl From<graphics::Settings> for Settings {
45 fn from(settings: graphics::Settings) -> Self {
46 Self {
47 default_font: settings.default_font,
48 default_text_size: settings.default_text_size,
49 antialiasing: settings.antialiasing,
50 ..Settings::default()
51 }
52 }
53}
54
55pub fn present_mode_from_env() -> Option<wgpu::PresentMode> {
68 let present_mode = std::env::var("ICED_PRESENT_MODE").ok()?;
69
70 match present_mode.to_lowercase().as_str() {
71 "vsync" => Some(wgpu::PresentMode::AutoVsync),
72 "no_vsync" => Some(wgpu::PresentMode::AutoNoVsync),
73 "immediate" => Some(wgpu::PresentMode::Immediate),
74 "fifo" => Some(wgpu::PresentMode::Fifo),
75 "fifo_relaxed" => Some(wgpu::PresentMode::FifoRelaxed),
76 "mailbox" => Some(wgpu::PresentMode::Mailbox),
77 _ => None,
78 }
79}