diff --git a/examples/open_window.rs b/examples/open_window.rs index de254c0..39697a3 100644 --- a/examples/open_window.rs +++ b/examples/open_window.rs @@ -20,7 +20,7 @@ fn main() { } struct MyProgram {} -impl baseview::Receiver for MyProgram { +impl baseview::Application for MyProgram { type AppMessage = (); fn create_context( diff --git a/src/lib.rs b/src/lib.rs index fb850a6..bacfdba 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -33,7 +33,7 @@ pub struct WindowOpenOptions<'a> { pub parent: Parent, } -pub trait Receiver { +pub trait Application { type AppMessage; fn create_context( diff --git a/src/macos/window.rs b/src/macos/window.rs index e4c1ba6..1d181c9 100644 --- a/src/macos/window.rs +++ b/src/macos/window.rs @@ -6,18 +6,18 @@ use cocoa::appkit::{ use cocoa::base::{nil, NO}; use cocoa::foundation::{NSAutoreleasePool, NSPoint, NSRect, NSSize, NSString}; -use crate::{Event, MouseButtonID, MouseScroll, Receiver, WindowOpenOptions}; +use crate::{Application, Event, MouseButtonID, MouseScroll, WindowOpenOptions}; -pub struct Window { - receiver: R, - app_message_rx: mpsc::Receiver, +pub struct Window { + application: A, + app_message_rx: mpsc::Receiver, } -impl Window { +impl Window { pub fn open( options: WindowOpenOptions, - receiver: R, - app_message_rx: mpsc::Receiver, + application: A, + app_message_rx: mpsc::Receiver, ) -> Self { unsafe { let _pool = NSAutoreleasePool::new(nil); @@ -50,7 +50,7 @@ impl Window { app.run(); Window { - receiver, + application, app_message_rx, } } diff --git a/src/win/window.rs b/src/win/window.rs index a656ad2..af503cb 100644 --- a/src/win/window.rs +++ b/src/win/window.rs @@ -26,7 +26,7 @@ use self::winapi::um::winuser::{ use self::winapi::ctypes::c_void; use crate::Parent::WithParent; use crate::{handle_message, WindowOpenOptions}; -use crate::{Event, MouseButtonID, MouseScroll, Receiver}; +use crate::{Application, Event, MouseButtonID, MouseScroll}; use std::sync::{Arc, Mutex}; unsafe fn message_box(title: &str, msg: &str) { @@ -113,24 +113,24 @@ unsafe fn unregister_wnd_class(wnd_class: ATOM) { unsafe fn init_gl_context() {} -pub struct Window { +pub struct Window { pub(crate) hwnd: HWND, hdc: HDC, gl_context: HGLRC, window_class: ATOM, - receiver: R, - app_message_rx: mpsc::Receiver, + application: A, + app_message_rx: mpsc::Receiver, scaling: Option, // DPI scale, 96.0 is "default". r: f32, g: f32, b: f32, } -impl Window { +impl Window { pub fn open( options: WindowOpenOptions, - receiver: R, - app_message_rx: mpsc::Receiver, + application: A, + app_message_rx: mpsc::Receiver, ) { unsafe { let mut window = Window { @@ -138,7 +138,7 @@ impl Window { hdc: null_mut(), gl_context: null_mut(), window_class: 0, - receiver, + application, app_message_rx, scaling: None, r: 0.3, @@ -264,7 +264,7 @@ impl Window { } pub fn close(&self) { - self.receiver.on_event(Event::WillClose); + self.application.on_event(Event::WillClose); // todo: see https://github.com/wrl/rutabaga/blob/f30ff67e157375cafdbafe5fb549f1790443a3a8/src/platform/win/window.c#L402 unsafe { @@ -289,6 +289,6 @@ impl Window { self.r = r; self.g = g; - self.receiver.on_message(Event::CursorMotion(x, y)); + self.application.on_message(Event::CursorMotion(x, y)); } } diff --git a/src/x11/window.rs b/src/x11/window.rs index aefdc1d..5506076 100644 --- a/src/x11/window.rs +++ b/src/x11/window.rs @@ -6,22 +6,24 @@ use ::x11::xlib; // use xcb::dri2; // needed later use super::XcbConnection; -use crate::{Event, MouseButtonID, MouseScroll, Parent, Receiver, WindowInfo, WindowOpenOptions}; +use crate::{ + Application, Event, MouseButtonID, MouseScroll, Parent, WindowInfo, WindowOpenOptions, +}; use raw_window_handle::RawWindowHandle; -pub struct Window { +pub struct Window { scaling: Option, // DPI scale, 96.0 is "default". xcb_connection: XcbConnection, - receiver: R, - app_message_rx: mpsc::Receiver, + application: A, + app_message_rx: mpsc::Receiver, } -impl Window { +impl Window { pub fn open( options: WindowOpenOptions, - receiver: R, - app_message_rx: mpsc::Receiver, + application: A, + app_message_rx: mpsc::Receiver, ) -> Self { // Convert the parent to a X11 window ID if we're given one let parent = match options.parent { @@ -134,7 +136,7 @@ impl Window { let mut x11_window = Self { scaling: None, xcb_connection, - receiver, + application, app_message_rx, }; @@ -148,7 +150,9 @@ impl Window { dpi: x11_window.scaling, }; - x11_window.receiver.create_context(raw_handle, &window_info); + x11_window + .application + .create_context(raw_handle, &window_info); x11_window.run_event_loop(); @@ -187,14 +191,14 @@ impl Window { match event_type { xcb::EXPOSE => { - self.receiver.on_event(Event::RenderExpose); + self.application.on_event(Event::RenderExpose); } xcb::MOTION_NOTIFY => { let event = unsafe { xcb::cast_event::(&event) }; let detail = event.detail(); if detail != 4 && detail != 5 { - self.receiver.on_event(Event::CursorMotion( + self.application.on_event(Event::CursorMotion( event.event_x() as i32, event.event_y() as i32, )); @@ -206,20 +210,20 @@ impl Window { match detail { 4 => { - self.receiver.on_event(Event::MouseScroll(MouseScroll { + self.application.on_event(Event::MouseScroll(MouseScroll { x_delta: 0.0, y_delta: 1.0, })); } 5 => { - self.receiver.on_event(Event::MouseScroll(MouseScroll { + self.application.on_event(Event::MouseScroll(MouseScroll { x_delta: 0.0, y_delta: -1.0, })); } detail => { let button_id = mouse_id(detail); - self.receiver.on_event(Event::MouseDown(button_id)); + self.application.on_event(Event::MouseDown(button_id)); } } } @@ -229,20 +233,20 @@ impl Window { if detail != 4 && detail != 5 { let button_id = mouse_id(detail); - self.receiver.on_event(Event::MouseUp(button_id)); + self.application.on_event(Event::MouseUp(button_id)); } } xcb::KEY_PRESS => { let event = unsafe { xcb::cast_event::(&event) }; let detail = event.detail(); - self.receiver.on_event(Event::KeyDown(detail)); + self.application.on_event(Event::KeyDown(detail)); } xcb::KEY_RELEASE => { let event = unsafe { xcb::cast_event::(&event) }; let detail = event.detail(); - self.receiver.on_event(Event::KeyUp(detail)); + self.application.on_event(Event::KeyUp(detail)); } _ => { println!("Unhandled event type: {:?}", event_type);