1
2
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
use elmesque::Element;
use position::{Padding, Point};
pub mod split;
pub type CanvasId = usize;
#[derive(Clone, Debug)]
pub struct Canvas {
pub kind: Kind,
pub xy: Point,
pub element: Element,
pub padding: Padding,
pub set_since_last_drawn: bool,
}
impl Canvas {
pub fn empty() -> Canvas {
Canvas {
xy: [0.0, 0.0],
element: ::elmesque::element::empty(),
padding: Padding::none(),
kind: Kind::NoCanvas,
set_since_last_drawn: false,
}
}
}
#[derive(Clone, Debug)]
pub enum Kind {
NoCanvas,
Split(split::State),
}
impl Kind {
pub fn matches(&self, other: &Kind) -> bool {
match (self, other) {
(&Kind::NoCanvas, &Kind::NoCanvas) => true,
(&Kind::Split(_), &Kind::Split(_)) => true,
_ => false,
}
}
}