pub struct LogicalSize<P> {
pub width: P,
pub height: P,
}
Expand description
A size represented in logical pixels.
Fields§
§width: P
§height: P
Implementations§
Source§impl<P> LogicalSize<P>
impl<P> LogicalSize<P>
Sourcepub const fn new(width: P, height: P) -> LogicalSize<P>
pub const fn new(width: P, height: P) -> LogicalSize<P>
Examples found in repository?
More examples
examples/child_window.rs (line 19)
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
fn main() -> Result<(), impl std::error::Error> {
use std::collections::HashMap;
use rio_window::dpi::{LogicalPosition, LogicalSize, Position};
use rio_window::event::{ElementState, Event, KeyEvent, WindowEvent};
use rio_window::event_loop::{ActiveEventLoop, EventLoop};
use rio_window::raw_window_handle::HasRawWindowHandle;
use rio_window::window::Window;
#[path = "util/fill.rs"]
mod fill;
fn spawn_child_window(parent: &Window, event_loop: &ActiveEventLoop) -> Window {
let parent = parent.raw_window_handle().unwrap();
let mut window_attributes = Window::default_attributes()
.with_title("child window")
.with_inner_size(LogicalSize::new(200.0f32, 200.0f32))
.with_position(Position::Logical(LogicalPosition::new(0.0, 0.0)))
.with_visible(true);
// `with_parent_window` is unsafe. Parent window must be a valid window.
window_attributes = unsafe { window_attributes.with_parent_window(Some(parent)) };
event_loop.create_window(window_attributes).unwrap()
}
let mut windows = HashMap::new();
let event_loop: EventLoop<()> = EventLoop::new().unwrap();
let mut parent_window_id = None;
event_loop.run(move |event: Event<()>, event_loop| {
match event {
Event::Resumed => {
let attributes = Window::default_attributes()
.with_title("parent window")
.with_position(Position::Logical(LogicalPosition::new(0.0, 0.0)))
.with_inner_size(LogicalSize::new(640.0f32, 480.0f32));
let window = event_loop.create_window(attributes).unwrap();
parent_window_id = Some(window.id());
println!("Parent window id: {parent_window_id:?})");
windows.insert(window.id(), window);
}
Event::WindowEvent { window_id, event } => match event {
WindowEvent::CloseRequested => {
windows.clear();
event_loop.exit();
}
WindowEvent::CursorEntered { device_id: _ } => {
// On x11, println when the cursor entered in a window even if the child window
// is created by some key inputs.
// the child windows are always placed at (0, 0) with size (200, 200) in the
// parent window, so we also can see this log when we move
// the cursor around (200, 200) in parent window.
println!("cursor entered in the window {window_id:?}");
}
WindowEvent::KeyboardInput {
event:
KeyEvent {
state: ElementState::Pressed,
..
},
..
} => {
let parent_window = windows.get(&parent_window_id.unwrap()).unwrap();
let child_window = spawn_child_window(parent_window, event_loop);
let child_id = child_window.id();
println!("Child window created with id: {child_id:?}");
windows.insert(child_id, child_window);
}
WindowEvent::RedrawRequested => {
if let Some(window) = windows.get(&window_id) {
fill::fill_window(window);
}
}
_ => (),
},
_ => (),
}
})
}
Source§impl<P> LogicalSize<P>where
P: Pixel,
impl<P> LogicalSize<P>where
P: Pixel,
pub fn from_physical<T, X>(physical: T, scale_factor: f64) -> LogicalSize<P>
pub fn to_physical<X>(&self, scale_factor: f64) -> PhysicalSize<X>where
X: Pixel,
pub fn cast<X>(&self) -> LogicalSize<X>where
X: Pixel,
Trait Implementations§
Source§impl<P> Clone for LogicalSize<P>where
P: Clone,
impl<P> Clone for LogicalSize<P>where
P: Clone,
Source§fn clone(&self) -> LogicalSize<P>
fn clone(&self) -> LogicalSize<P>
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl<P> Debug for LogicalSize<P>where
P: Debug,
impl<P> Debug for LogicalSize<P>where
P: Debug,
Source§impl<P> Default for LogicalSize<P>where
P: Default,
impl<P> Default for LogicalSize<P>where
P: Default,
Source§fn default() -> LogicalSize<P>
fn default() -> LogicalSize<P>
Returns the “default value” for a type. Read more
Source§impl<P, X> From<[X; 2]> for LogicalSize<P>
impl<P, X> From<[X; 2]> for LogicalSize<P>
Source§fn from(_: [X; 2]) -> LogicalSize<P>
fn from(_: [X; 2]) -> LogicalSize<P>
Converts to this type from the input type.
Source§impl<P, X> From<(X, X)> for LogicalSize<P>
impl<P, X> From<(X, X)> for LogicalSize<P>
Source§fn from(_: (X, X)) -> LogicalSize<P>
fn from(_: (X, X)) -> LogicalSize<P>
Converts to this type from the input type.
Source§impl<P> From<LogicalSize<P>> for Sizewhere
P: Pixel,
impl<P> From<LogicalSize<P>> for Sizewhere
P: Pixel,
Source§fn from(size: LogicalSize<P>) -> Size
fn from(size: LogicalSize<P>) -> Size
Converts to this type from the input type.
Source§impl<P> Hash for LogicalSize<P>where
P: Hash,
impl<P> Hash for LogicalSize<P>where
P: Hash,
Source§impl<P> Ord for LogicalSize<P>where
P: Ord,
impl<P> Ord for LogicalSize<P>where
P: Ord,
Source§fn cmp(&self, other: &LogicalSize<P>) -> Ordering
fn cmp(&self, other: &LogicalSize<P>) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
Source§impl<P> PartialEq for LogicalSize<P>where
P: PartialEq,
impl<P> PartialEq for LogicalSize<P>where
P: PartialEq,
Source§impl<P> PartialOrd for LogicalSize<P>where
P: PartialOrd,
impl<P> PartialOrd for LogicalSize<P>where
P: PartialOrd,
impl<P> Copy for LogicalSize<P>where
P: Copy,
impl<P> Eq for LogicalSize<P>where
P: Eq,
impl<P> StructuralPartialEq for LogicalSize<P>
Auto Trait Implementations§
impl<P> Freeze for LogicalSize<P>where
P: Freeze,
impl<P> RefUnwindSafe for LogicalSize<P>where
P: RefUnwindSafe,
impl<P> Send for LogicalSize<P>where
P: Send,
impl<P> Sync for LogicalSize<P>where
P: Sync,
impl<P> Unpin for LogicalSize<P>where
P: Unpin,
impl<P> UnwindSafe for LogicalSize<P>where
P: UnwindSafe,
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