1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
use mint::Vector2;

/// The various options to pass to the Window and/or GL context

#[derive(Clone, PartialEq)]
pub struct Settings {
    /// The size of the window

    pub size: Vector2<f32>,
    /// If the cursor should be visible over the application, or if the cursor should be hidden

    pub cursor_icon: Option<CursorIcon>,
    /// If the application should be fullscreen

    pub fullscreen: bool,
    /// The icon on the window or the favicon on the tab

    #[cfg(feature = "image")]
    pub icon_path: Option<&'static str>,
    /// How many samples to do for MSAA

    ///

    /// By default it is None; if it is Some, it should be a non-zero power of two

    ///

    /// Does nothing on web currently

    pub multisampling: Option<u16>,
    /// Enable or disable vertical sync

    ///

    /// Does nothing on web; defaults to true

    pub vsync: bool,
    /// If the window can be resized by the user

    ///

    /// Does nothing on web; defaults to false

    pub resizable: bool,
    /// The title of your application

    pub title: &'static str,
}

impl Default for Settings {
    fn default() -> Settings {
        Settings {
            size: Vector2 {
                x: 1024.0,
                y: 768.0,
            },
            cursor_icon: Some(CursorIcon::Default),
            fullscreen: false,
            #[cfg(feature = "image")]
            icon_path: None,
            multisampling: None,
            vsync: true,
            resizable: false,
            title: "",
        }
    }
}

/// The options for the cursor icon

#[derive(Copy, Clone, PartialEq, Eq, Hash)]
pub enum CursorIcon {
    Default,
    Crosshair,
    Hand,
    Arrow,
    Move,
    Text,
    Wait,
    Help,
    Progress,
    NotAllowed,
    ContextMenu,
    Cell,
    VerticalText,
    Alias,
    Copy,
    NoDrop,
    Grab,
    Grabbing,
    AllScroll,
    ZoomIn,
    ZoomOut,
    EResize,
    NResize,
    NeResize,
    NwResize,
    SResize,
    SeResize,
    SwResize,
    WResize,
    EwResize,
    NsResize,
    NeswResize,
    NwseResize,
    ColResize,
    RowResize,
}

impl Default for CursorIcon {
    fn default() -> CursorIcon {
        CursorIcon::Default
    }
}