impl default for canvas cache

This commit is contained in:
Rob Ede 2020-04-08 23:07:42 +01:00
parent ad0a6c4c10
commit 6e7769b65d
No known key found for this signature in database
GPG Key ID: C2A3B36E841A91E6
3 changed files with 26 additions and 9 deletions

View File

@ -29,7 +29,7 @@ impl Application for Clock {
(
Clock {
now: chrono::Local::now().into(),
clock: canvas::layer::Cache::new(),
clock: Default::default(),
},
Command::none(),
)

View File

@ -39,7 +39,7 @@ impl Application for SolarSystem {
(
SolarSystem {
state: State::new(),
solar_system: canvas::layer::Cache::new(),
solar_system: Default::default(),
},
Command::none(),
)

View File

@ -6,6 +6,19 @@ use crate::{
use iced_native::Size;
use std::{cell::RefCell, marker::PhantomData, sync::Arc};
enum State {
Empty,
Filled {
bounds: Size,
primitive: Arc<Primitive>,
},
}
impl Default for State {
fn default() -> Self {
State::Empty
}
}
/// A simple cache that stores generated geometry to avoid recomputation.
///
/// A [`Cache`] will not redraw its geometry unless the dimensions of its layer
@ -19,12 +32,16 @@ pub struct Cache<T: Drawable> {
state: RefCell<State>,
}
enum State {
Empty,
Filled {
bounds: Size,
primitive: Arc<Primitive>,
},
impl<T> Default for Cache<T>
where
T: Drawable,
{
fn default() -> Self {
Self {
input: PhantomData,
state: Default::default(),
}
}
}
impl<T> Cache<T>
@ -37,7 +54,7 @@ where
pub fn new() -> Self {
Cache {
input: PhantomData,
state: RefCell::new(State::Empty),
state: Default::default(),
}
}