sfml_xt/graphics/
render_window_ext.rs

1use sfml::{
2    graphics::{RenderTarget, RenderWindow},
3    system::Vector2,
4    window::{ContextSettings, Style, VideoMode},
5};
6
7/// Extensions for `RenderWindow`
8pub trait RenderWindowExt {
9    /// Center the window on screen
10    fn center(&mut self);
11    /// Enter a fake fullscreen mode (desktop fullscreen)
12    fn desktop_fullscreen(&mut self, title: &str, ctx_settings: &ContextSettings);
13}
14
15impl RenderWindowExt for RenderWindow {
16    fn center(&mut self) {
17        let Vector2 { x, y } = self.size();
18        let desktop_mode = VideoMode::desktop_mode();
19        let width_diff = desktop_mode.width - x;
20        let height_diff = desktop_mode.height - y;
21        let new_x = width_diff / 2;
22        let new_y = height_diff / 2;
23        self.set_position(Vector2::new(new_x as i32, new_y as i32));
24    }
25    fn desktop_fullscreen(&mut self, title: &str, ctx_settings: &ContextSettings) {
26        let desktop_mode = VideoMode::desktop_mode();
27        self.recreate(desktop_mode, title, Style::NONE, ctx_settings);
28        self.set_position((0, 0).into());
29    }
30}