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
61
62
63
64
65
66
use crate::CellOption;
use papergrid::{AlignmentHorizontal, AlignmentVertical, Entity, Grid, Settings};
#[derive(Debug)]
pub enum Alignment {
Horizontal(AlignmentHorizontal),
Vertical(AlignmentVertical),
}
impl Alignment {
pub fn top() -> Self {
Self::vertical(AlignmentVertical::Top)
}
pub fn bottom() -> Self {
Self::vertical(AlignmentVertical::Bottom)
}
pub fn center_vertical() -> Self {
Self::vertical(AlignmentVertical::Center)
}
pub fn left() -> Self {
Self::horizontal(AlignmentHorizontal::Left)
}
pub fn right() -> Self {
Self::horizontal(AlignmentHorizontal::Right)
}
pub fn center_horizontal() -> Self {
Self::horizontal(AlignmentHorizontal::Center)
}
fn horizontal(alignment: AlignmentHorizontal) -> Self {
Self::Horizontal(alignment)
}
fn vertical(alignment: AlignmentVertical) -> Self {
Self::Vertical(alignment)
}
}
impl CellOption for Alignment {
fn change_cell(&self, grid: &mut Grid, row: usize, column: usize) {
let setting = match &self {
Self::Horizontal(a) => Settings::new().alignment(*a),
Self::Vertical(a) => Settings::new().vertical_alignment(*a),
};
grid.set(Entity::Cell(row, column), setting)
}
}