pub struct EventLoop { /* private fields */ }Implementations§
Source§impl EventLoop
impl EventLoop
Sourcepub fn new() -> Result<EventLoop>
pub fn new() -> Result<EventLoop>
Examples found in repository?
examples/basic.rs (line 80)
79fn main() {
80 let event_loop = EventLoop::new().unwrap();
81
82 let state = Rc::new(RefCell::new(State {
83 event_loop: event_loop.clone(),
84 window: None,
85 framebuffer: Vec::new(),
86 width: 0,
87 height: 0,
88 timer: None,
89 }));
90
91 let window = WindowOptions::new()
92 .title("window")
93 .size(Size::new(512.0, 512.0))
94 .open(&event_loop, {
95 let state = Rc::downgrade(&state);
96 move |event| state.upgrade().unwrap().borrow_mut().handle_event(event)
97 })
98 .unwrap();
99
100 window.show();
101
102 state.borrow_mut().window = Some(window);
103
104 state.borrow_mut().timer = Some(
105 Timer::repeat(&event_loop, Duration::from_millis(1000), || {
106 println!("timer")
107 })
108 .unwrap(),
109 );
110
111 event_loop.run().unwrap();
112}More examples
examples/child_window.rs (line 64)
63fn main() {
64 let parent_event_loop = EventLoop::new().unwrap();
65
66 let parent_state = Rc::new(RefCell::new(ParentState {
67 event_loop: parent_event_loop.clone(),
68 framebuffer: Vec::new(),
69 window: None,
70 }));
71
72 let window = WindowOptions::new()
73 .title("parent window")
74 .size(Size::new(512.0, 512.0))
75 .open(&parent_event_loop, {
76 let state = Rc::downgrade(&parent_state);
77 move |event| state.upgrade().unwrap().borrow_mut().handle_event(event)
78 })
79 .unwrap();
80
81 window.show();
82
83 let parent_window_raw = window.as_raw().unwrap();
84 parent_state.borrow_mut().window = Some(window);
85
86 let child_event_loop = EventLoopOptions::new().mode(EventLoopMode::Guest).build().unwrap();
87
88 let child_state = Rc::new(RefCell::new(ChildState {
89 framebuffer: Vec::new(),
90 window: None,
91 }));
92
93 let mut window_opts = WindowOptions::new();
94 unsafe {
95 window_opts.raw_parent(parent_window_raw);
96 }
97
98 let window = window_opts
99 .position(Point::new(128.0, 128.0))
100 .size(Size::new(256.0, 256.0))
101 .open(&child_event_loop, {
102 let state = Rc::downgrade(&child_state);
103 move |event| state.upgrade().unwrap().borrow_mut().handle_event(event)
104 })
105 .unwrap();
106
107 window.show();
108
109 child_state.borrow_mut().window = Some(window);
110
111 parent_event_loop.run().unwrap();
112
113 child_state.borrow_mut().window = None;
114
115 parent_state.borrow_mut().window = None;
116}Sourcepub fn run(&self) -> Result<()>
pub fn run(&self) -> Result<()>
Examples found in repository?
examples/basic.rs (line 111)
79fn main() {
80 let event_loop = EventLoop::new().unwrap();
81
82 let state = Rc::new(RefCell::new(State {
83 event_loop: event_loop.clone(),
84 window: None,
85 framebuffer: Vec::new(),
86 width: 0,
87 height: 0,
88 timer: None,
89 }));
90
91 let window = WindowOptions::new()
92 .title("window")
93 .size(Size::new(512.0, 512.0))
94 .open(&event_loop, {
95 let state = Rc::downgrade(&state);
96 move |event| state.upgrade().unwrap().borrow_mut().handle_event(event)
97 })
98 .unwrap();
99
100 window.show();
101
102 state.borrow_mut().window = Some(window);
103
104 state.borrow_mut().timer = Some(
105 Timer::repeat(&event_loop, Duration::from_millis(1000), || {
106 println!("timer")
107 })
108 .unwrap(),
109 );
110
111 event_loop.run().unwrap();
112}More examples
examples/child_window.rs (line 111)
63fn main() {
64 let parent_event_loop = EventLoop::new().unwrap();
65
66 let parent_state = Rc::new(RefCell::new(ParentState {
67 event_loop: parent_event_loop.clone(),
68 framebuffer: Vec::new(),
69 window: None,
70 }));
71
72 let window = WindowOptions::new()
73 .title("parent window")
74 .size(Size::new(512.0, 512.0))
75 .open(&parent_event_loop, {
76 let state = Rc::downgrade(&parent_state);
77 move |event| state.upgrade().unwrap().borrow_mut().handle_event(event)
78 })
79 .unwrap();
80
81 window.show();
82
83 let parent_window_raw = window.as_raw().unwrap();
84 parent_state.borrow_mut().window = Some(window);
85
86 let child_event_loop = EventLoopOptions::new().mode(EventLoopMode::Guest).build().unwrap();
87
88 let child_state = Rc::new(RefCell::new(ChildState {
89 framebuffer: Vec::new(),
90 window: None,
91 }));
92
93 let mut window_opts = WindowOptions::new();
94 unsafe {
95 window_opts.raw_parent(parent_window_raw);
96 }
97
98 let window = window_opts
99 .position(Point::new(128.0, 128.0))
100 .size(Size::new(256.0, 256.0))
101 .open(&child_event_loop, {
102 let state = Rc::downgrade(&child_state);
103 move |event| state.upgrade().unwrap().borrow_mut().handle_event(event)
104 })
105 .unwrap();
106
107 window.show();
108
109 child_state.borrow_mut().window = Some(window);
110
111 parent_event_loop.run().unwrap();
112
113 child_state.borrow_mut().window = None;
114
115 parent_state.borrow_mut().window = None;
116}pub fn poll(&self) -> Result<()>
Sourcepub fn exit(&self)
pub fn exit(&self)
Examples found in repository?
examples/child_window.rs (line 29)
16 fn handle_event(&mut self, event: Event) -> Response {
17 match event {
18 Event::Frame => {
19 let window = &self.window.as_ref().unwrap();
20
21 let scale = window.scale();
22 let size = window.size();
23 let width = (scale * size.width) as usize;
24 let height = (scale * size.height) as usize;
25 self.framebuffer.resize(width * height, 0xFF00FFFF);
26 window.present(Bitmap::new(&self.framebuffer, width, height));
27 }
28 Event::Close => {
29 self.event_loop.exit();
30 }
31 _ => {}
32 }
33
34 Response::Ignore
35 }More examples
examples/basic.rs (line 71)
26 fn handle_event(&mut self, event: Event) -> Response {
27 match event {
28 Event::Expose(rects) => {
29 println!("expose: {:?}", rects);
30 }
31 Event::Frame => {
32 println!("frame");
33
34 let window = self.window.as_ref().unwrap();
35
36 let scale = window.scale();
37 self.width = (WIDTH as f64 * scale) as usize;
38 self.height = (HEIGHT as f64 * scale) as usize;
39 self.framebuffer.resize(self.width * self.height, 0xFFFF00FF);
40
41 window.present(Bitmap::new(&self.framebuffer, self.width, self.height));
42 }
43 Event::GainFocus => {
44 println!("gain focus");
45 }
46 Event::LoseFocus => {
47 println!("lose focus");
48 }
49 Event::MouseEnter => {
50 println!("mouse enter");
51 }
52 Event::MouseExit => {
53 println!("mouse exit");
54 }
55 Event::MouseMove(pos) => {
56 println!("mouse move: {:?}", pos);
57 }
58 Event::MouseDown(btn) => {
59 println!("mouse down: {:?}", btn);
60 return Response::Capture;
61 }
62 Event::MouseUp(btn) => {
63 println!("mouse up: {:?}", btn);
64 return Response::Capture;
65 }
66 Event::Scroll(delta) => {
67 println!("scroll: {:?}", delta);
68 return Response::Capture;
69 }
70 Event::Close => {
71 self.event_loop.exit();
72 }
73 }
74
75 Response::Ignore
76 }Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for EventLoop
impl !Send for EventLoop
impl !Sync for EventLoop
impl !UnwindSafe for EventLoop
impl Freeze for EventLoop
impl Unpin for EventLoop
impl UnsafeUnpin for EventLoop
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more