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 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205
//! Functions and types relating to the game window, and the environment it is running in. use crate::{Context, Result}; /// Quits the game, if it is currently running. /// /// Note that quitting the game does not take effect until the end of the current /// cycle of the game loop. This will probably change later. pub fn quit(ctx: &mut Context) { ctx.running = false; } /// Gets the current title of the window. pub fn get_title(ctx: &Context) -> &str { ctx.window.get_window_title() } /// Sets the title of the window. pub fn set_title<S>(ctx: &mut Context, title: S) where S: AsRef<str>, { ctx.window.set_window_title(title) } /// Gets the width of the window. pub fn get_width(ctx: &Context) -> i32 { ctx.window.get_window_width() } /// Sets the width of the window. /// /// # Errors /// /// * `TetraError::FailedToChangeDisplayMode` will be returned if the game was unable to /// change the window size. pub fn set_width(ctx: &mut Context, width: i32) -> Result { set_size(ctx, width, ctx.window.get_window_height()) } /// Gets the height of the window. pub fn get_height(ctx: &Context) -> i32 { ctx.window.get_window_height() } /// Sets the height of the window. /// /// # Errors /// /// * `TetraError::FailedToChangeDisplayMode` will be returned if the game was unable to /// change the window size. pub fn set_height(ctx: &mut Context, height: i32) -> Result { set_size(ctx, ctx.window.get_window_width(), height) } /// Gets the size of the window. pub fn get_size(ctx: &Context) -> (i32, i32) { ctx.window.get_window_size() } /// Sets the size of the window. /// /// # Errors /// /// * `TetraError::FailedToChangeDisplayMode` will be returned if the game was unable to /// change the window size. pub fn set_size(ctx: &mut Context, width: i32, height: i32) -> Result { ctx.window.set_window_size(width, height) } /// Sets whether the window should be vsynced. /// /// # Errors /// /// * `TetraError::FailedToChangeDisplayMode` will be returned if the game was unable to /// change vsync mode. pub fn set_vsync(ctx: &mut Context, vsync: bool) -> Result { ctx.window.set_vsync(vsync) } /// Returns whethere or not vsync is enabled. pub fn is_vsync_enabled(ctx: &Context) -> bool { ctx.window.is_vsync_enabled() } /// Sets whether the window should be in fullscreen mode. /// /// # Errors /// /// * `TetraError::FailedToChangeDisplayMode` will be returned if the game was unable to /// enter or exit fullscreen. pub fn set_fullscreen(ctx: &mut Context, fullscreen: bool) -> Result { ctx.window.set_fullscreen(fullscreen) } /// Returns whether or not the window is currently in fullscreen mode. pub fn is_fullscreen(ctx: &Context) -> bool { ctx.window.is_fullscreen() } /// Sets whether or not the mouse cursor should be visible. /// /// # Errors /// /// * `TetraError::PlatformError` will be returned if the cursor state was inaccessible. pub fn set_mouse_visible(ctx: &mut Context, visible: bool) -> Result { ctx.window.set_mouse_visible(visible) } /// Returns whether or not the mouse cursor is currently visible. pub fn is_mouse_visible(ctx: &Context) -> bool { ctx.window.is_mouse_visible() } /// Get the number of monitors connected to the device. /// /// # Errors /// /// * `TetraError::PlatformError` will be returned if the monitor state was inaccessible. pub fn get_monitor_count(ctx: &Context) -> Result<i32> { ctx.window.get_monitor_count() } /// Get the name of a monitor connected to the device. /// /// # Errors /// /// * `TetraError::PlatformError` will be returned if the monitor state was inaccessible. pub fn get_monitor_name(ctx: &Context, monitor_index: i32) -> Result<String> { ctx.window.get_monitor_name(monitor_index) } /// Get the width of a monitor connected to the device. /// /// # Errors /// /// * `TetraError::PlatformError` will be returned if the monitor state was inaccessible. pub fn get_monitor_width(ctx: &Context, monitor_index: i32) -> Result<i32> { get_monitor_size(ctx, monitor_index).map(|(w, _)| w) } /// Get the height of a monitor connected to the device. /// /// # Errors /// /// * `TetraError::PlatformError` will be returned if the monitor state was inaccessible. pub fn get_monitor_height(ctx: &Context, monitor_index: i32) -> Result<i32> { get_monitor_size(ctx, monitor_index).map(|(_, h)| h) } /// Get the size of a monitor connected to the device. /// /// # Errors /// /// * `TetraError::PlatformError` will be returned if the monitor state was inaccessible. pub fn get_monitor_size(ctx: &Context, monitor_index: i32) -> Result<(i32, i32)> { ctx.window.get_monitor_size(monitor_index) } /// Get the index of the monitor that the window is currently on. /// /// # Errors /// /// * `TetraError::PlatformError` will be returned if the monitor state was inaccessible. pub fn get_current_monitor(ctx: &Context) -> Result<i32> { ctx.window.get_current_monitor() } /// Get the name of the monitor that the window is currently on. /// /// # Errors /// /// * `TetraError::PlatformError` will be returned if the monitor state was inaccessible. pub fn get_current_monitor_name(ctx: &Context) -> Result<String> { let monitor_index = ctx.window.get_current_monitor()?; ctx.window.get_monitor_name(monitor_index) } /// Get the width of the monitor that the window is currently on. /// /// # Errors /// /// * `TetraError::PlatformError` will be returned if the monitor state was inaccessible. pub fn get_current_monitor_width(ctx: &Context) -> Result<i32> { get_current_monitor_size(ctx).map(|(w, _)| w) } /// Get the height of the monitor that the window is currently on. /// /// # Errors /// /// * `TetraError::PlatformError` will be returned if the monitor state was inaccessible. pub fn get_current_monitor_height(ctx: &Context) -> Result<i32> { get_current_monitor_size(ctx).map(|(_, h)| h) } /// Get the size of the monitor that the window is currently on. /// /// # Errors /// /// * `TetraError::PlatformError` will be returned if the monitor state was inaccessible. pub fn get_current_monitor_size(ctx: &Context) -> Result<(i32, i32)> { let monitor_index = ctx.window.get_current_monitor()?; ctx.window.get_monitor_size(monitor_index) }