[bug fix] assume pixels_per_point=1 if nothing is ever set
This commit is contained in:
parent
bc0d6baefb
commit
23d99b07c8
2 changed files with 14 additions and 8 deletions
|
@ -132,12 +132,13 @@ impl Context {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn pixels_per_point(&self) -> f32 {
|
pub fn pixels_per_point(&self) -> f32 {
|
||||||
self.input.pixels_per_point
|
self.input.pixels_per_point()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Useful for pixel-perfect rendering
|
/// Useful for pixel-perfect rendering
|
||||||
pub fn round_to_pixel(&self, point: f32) -> f32 {
|
pub fn round_to_pixel(&self, point: f32) -> f32 {
|
||||||
(point * self.input.pixels_per_point).round() / self.input.pixels_per_point
|
let pixels_per_point = self.pixels_per_point();
|
||||||
|
(point * pixels_per_point).round() / pixels_per_point
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Useful for pixel-perfect rendering
|
/// Useful for pixel-perfect rendering
|
||||||
|
@ -176,7 +177,7 @@ impl Context {
|
||||||
|
|
||||||
self.input = std::mem::take(&mut self.input).begin_frame(new_raw_input);
|
self.input = std::mem::take(&mut self.input).begin_frame(new_raw_input);
|
||||||
let mut font_definitions = self.font_definitions.lock();
|
let mut font_definitions = self.font_definitions.lock();
|
||||||
font_definitions.pixels_per_point = self.input.pixels_per_point;
|
font_definitions.pixels_per_point = self.input.pixels_per_point();
|
||||||
if self.fonts.is_none() || *self.fonts.as_ref().unwrap().definitions() != *font_definitions
|
if self.fonts.is_none() || *self.fonts.as_ref().unwrap().definitions() != *font_definitions
|
||||||
{
|
{
|
||||||
self.fonts = Some(Arc::new(Fonts::from_definitions(font_definitions.clone())));
|
self.fonts = Some(Arc::new(Fonts::from_definitions(font_definitions.clone())));
|
||||||
|
@ -535,7 +536,7 @@ impl Context {
|
||||||
|
|
||||||
ui.collapsing("Stats", |ui| {
|
ui.collapsing("Stats", |ui| {
|
||||||
ui.add(label!(
|
ui.add(label!(
|
||||||
"Screen size: {} x {} points, pixels_per_point: {}",
|
"Screen size: {} x {} points, pixels_per_point: {:?}",
|
||||||
ui.input().screen_size.x,
|
ui.input().screen_size.x,
|
||||||
ui.input().screen_size.y,
|
ui.input().screen_size.y,
|
||||||
ui.input().pixels_per_point,
|
ui.input().pixels_per_point,
|
||||||
|
|
|
@ -70,7 +70,7 @@ pub struct InputState {
|
||||||
pub screen_size: Vec2,
|
pub screen_size: Vec2,
|
||||||
|
|
||||||
/// Also known as device pixel ratio, > 1 for HDPI screens.
|
/// Also known as device pixel ratio, > 1 for HDPI screens.
|
||||||
pub pixels_per_point: f32,
|
pub pixels_per_point: Option<f32>,
|
||||||
|
|
||||||
/// Time in seconds. Relative to whatever. Used for animation.
|
/// Time in seconds. Relative to whatever. Used for animation.
|
||||||
pub time: f64,
|
pub time: f64,
|
||||||
|
@ -205,7 +205,7 @@ impl InputState {
|
||||||
mouse,
|
mouse,
|
||||||
scroll_delta: new.scroll_delta,
|
scroll_delta: new.scroll_delta,
|
||||||
screen_size: new.screen_size,
|
screen_size: new.screen_size,
|
||||||
pixels_per_point: new.pixels_per_point.unwrap_or(self.pixels_per_point),
|
pixels_per_point: new.pixels_per_point.or(self.pixels_per_point),
|
||||||
time: new.time,
|
time: new.time,
|
||||||
unstable_dt,
|
unstable_dt,
|
||||||
predicted_dt: 1.0 / 60.0, // TODO: remove this hack
|
predicted_dt: 1.0 / 60.0, // TODO: remove this hack
|
||||||
|
@ -249,9 +249,14 @@ impl InputState {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Also known as device pixel ratio, > 1 for HDPI screens.
|
||||||
|
pub fn pixels_per_point(&self) -> f32 {
|
||||||
|
self.pixels_per_point.unwrap_or(1.0)
|
||||||
|
}
|
||||||
|
|
||||||
/// Size of a physical pixel in logical gui coordinates (points).
|
/// Size of a physical pixel in logical gui coordinates (points).
|
||||||
pub fn physical_pixel_size(&self) -> f32 {
|
pub fn physical_pixel_size(&self) -> f32 {
|
||||||
1.0 / self.pixels_per_point
|
1.0 / self.pixels_per_point()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// How imprecise do we expect the mouse/touch input to be?
|
/// How imprecise do we expect the mouse/touch input to be?
|
||||||
|
@ -370,7 +375,7 @@ impl InputState {
|
||||||
ui.add(label!("scroll_delta: {:?} points", self.scroll_delta));
|
ui.add(label!("scroll_delta: {:?} points", self.scroll_delta));
|
||||||
ui.add(label!("screen_size: {:?} points", self.screen_size));
|
ui.add(label!("screen_size: {:?} points", self.screen_size));
|
||||||
ui.add(label!(
|
ui.add(label!(
|
||||||
"{} points for each physical pixel (HDPI factor)",
|
"{:?} points for each physical pixel (HDPI factor)",
|
||||||
self.pixels_per_point
|
self.pixels_per_point
|
||||||
));
|
));
|
||||||
ui.add(label!("time: {:.3} s", self.time));
|
ui.add(label!("time: {:.3} s", self.time));
|
||||||
|
|
Loading…
Reference in a new issue