|
|
@ -1,4 +1,4 @@ |
|
|
|
use crate::epi; |
|
|
|
use crate::{epi, WindowInfo}; |
|
|
|
use egui_winit::{native_pixels_per_point, WindowSettings}; |
|
|
|
|
|
|
|
pub fn points_to_size(points: egui::Vec2) -> winit::dpi::LogicalSize<f64> { |
|
|
@ -8,6 +8,28 @@ pub fn points_to_size(points: egui::Vec2) -> winit::dpi::LogicalSize<f64> { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
pub fn read_window_info( |
|
|
|
window: &winit::window::Window, |
|
|
|
pixels_per_point: f32, |
|
|
|
) -> Option<WindowInfo> { |
|
|
|
match window.outer_position() { |
|
|
|
Ok(pos) => { |
|
|
|
let pos = pos.to_logical::<f32>(pixels_per_point.into()); |
|
|
|
let size = window |
|
|
|
.inner_size() |
|
|
|
.to_logical::<f32>(pixels_per_point.into()); |
|
|
|
Some(WindowInfo { |
|
|
|
position: egui::Pos2 { x: pos.x, y: pos.y }, |
|
|
|
size: egui::Vec2 { |
|
|
|
x: size.width, |
|
|
|
y: size.height, |
|
|
|
}, |
|
|
|
}) |
|
|
|
} |
|
|
|
Err(_) => None, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
pub fn window_builder( |
|
|
|
native_options: &epi::NativeOptions, |
|
|
|
window_settings: &Option<WindowSettings>, |
|
|
@ -177,6 +199,7 @@ impl EpiIntegration { |
|
|
|
prefer_dark_mode, |
|
|
|
cpu_usage: None, |
|
|
|
native_pixels_per_point: Some(native_pixels_per_point(window)), |
|
|
|
window_info: read_window_info(window, egui_ctx.pixels_per_point()), |
|
|
|
}, |
|
|
|
output: Default::default(), |
|
|
|
storage, |
|
|
@ -240,6 +263,7 @@ impl EpiIntegration { |
|
|
|
) -> egui::FullOutput { |
|
|
|
let frame_start = std::time::Instant::now(); |
|
|
|
|
|
|
|
self.frame.info.window_info = read_window_info(window, self.egui_ctx.pixels_per_point()); |
|
|
|
let raw_input = self.egui_winit.take_egui_input(window); |
|
|
|
let full_output = self.egui_ctx.run(raw_input, |egui_ctx| { |
|
|
|
crate::profile_scope!("App::update"); |
|
|
|