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
use super::image::Image; use super::canvas::Canvas; use crate::inputs::event::{Event, EventManager}; use web_sys::{window, Window as WebSysWindow, Document}; use crate::system::log; pub struct Window { document: Document, window: WebSysWindow, events: EventManager } impl Window { pub fn init() -> (Window, Canvas) { let window = window().unwrap(); let document = window.document().unwrap(); let canvas = Canvas::new(); document .body() .unwrap() .append_child(&canvas.element) .unwrap(); canvas.element.set_width(document.document_element().unwrap().client_width() as u32); canvas.element.set_height(document.document_element().unwrap().client_height() as u32); (Window { window, document, events: EventManager::new() }, canvas) } pub fn init_with_events(events: u8) -> (Window, Canvas) { let mouse_events = 0b00000001 & events == 0b00000001; let key_events = 0b00000010 & events == 0b00000010; let size_events = 0b00000100 & events == 0b00000100; let focus_events = 0b00001000 & events == 0b00001000; let joystick_events = 0b00010000 & events == 0b00010000; let (mut window, canvas) = Window::init(); if mouse_events { window.events.start_recording_mouse_events(); } else { } if key_events { window.events.start_recording_keyboard_events(); } (window, canvas) } pub fn poll_events(&mut self) -> &mut EventManager { &mut self.events } pub fn set_title(&mut self, title: &str) { self.document.set_title(title) } pub fn get_title(&self) -> String { self.document.title() } pub fn set_icon(&mut self, icon: &Image) { unimplemented!() } pub fn get_icon(&self) -> Image { unimplemented!() } }