diff options
author | 2020-12-18 10:55:18 +0100 | |
---|---|---|
committer | 2020-12-18 10:55:18 +0100 | |
commit | 64af860ad2317d9f2e72cbda659102d96ec0f931 (patch) | |
tree | e322f96e00c1a09b9b2d1af8ee7835fc560c4201 /native/src/widget | |
parent | e6f23e37719ccc52e3a3802e204a9b33aeba9d2a (diff) | |
download | iced-64af860ad2317d9f2e72cbda659102d96ec0f931.tar.gz iced-64af860ad2317d9f2e72cbda659102d96ec0f931.tar.bz2 iced-64af860ad2317d9f2e72cbda659102d96ec0f931.zip |
Remove unnecessary `Option` in `image::viewer::State`
Diffstat (limited to 'native/src/widget')
-rw-r--r-- | native/src/widget/image/viewer.rs | 42 |
1 files changed, 24 insertions, 18 deletions
diff --git a/native/src/widget/image/viewer.rs b/native/src/widget/image/viewer.rs index c8656101..0f081a1a 100644 --- a/native/src/widget/image/viewer.rs +++ b/native/src/widget/image/viewer.rs @@ -136,7 +136,7 @@ impl<'a> Viewer<'a> { let ratio = width_ratio.min(height_ratio); - let scale = self.state.scale.unwrap_or(1.0); + let scale = self.state.scale; if ratio < 1.0 { (dimensions.0 * ratio * scale, dimensions.1 * ratio * scale) @@ -222,29 +222,24 @@ where match delta { mouse::ScrollDelta::Lines { y, .. } | mouse::ScrollDelta::Pixels { y, .. } => { - let previous_scale = self.state.scale.unwrap_or(1.0); + let previous_scale = self.state.scale; if y < 0.0 && previous_scale > self.min_scale || y > 0.0 && previous_scale < self.max_scale { - self.state.scale = Some( - (if y > 0.0 { - self.state.scale.unwrap_or(1.0) - * (1.0 + self.scale_step) - } else { - self.state.scale.unwrap_or(1.0) - / (1.0 + self.scale_step) - }) - .max(self.min_scale) - .min(self.max_scale), - ); + self.state.scale = (if y > 0.0 { + self.state.scale * (1.0 + self.scale_step) + } else { + self.state.scale / (1.0 + self.scale_step) + }) + .max(self.min_scale) + .min(self.max_scale); let image_size = self.image_size(renderer, bounds.size()); - let factor = self.state.scale.unwrap() - / previous_scale - - 1.0; + let factor = + self.state.scale / previous_scale - 1.0; let cursor_to_center = relative_cursor_position( cursor_position, @@ -343,14 +338,25 @@ where /// The local state of a [`Viewer`]. /// /// [`Viewer`]: struct.Viewer.html -#[derive(Debug, Clone, Copy, Default)] +#[derive(Debug, Clone, Copy)] pub struct State { - scale: Option<f32>, + scale: f32, starting_offset: Vector, current_offset: Vector, starting_cursor_pos: Option<Point>, } +impl Default for State { + fn default() -> Self { + Self { + scale: 1.0, + starting_offset: Vector::default(), + current_offset: Vector::default(), + starting_cursor_pos: None, + } + } +} + impl State { /// Creates a new [`State`]. /// |