summaryrefslogtreecommitdiffstats
path: root/examples/lib-dfscq-log/src/bracket.rs
diff options
context:
space:
mode:
authorMinijackson <minijackson@riseup.net>2022-12-22 12:19:59 +0100
committerMinijackson <minijackson@riseup.net>2022-12-22 12:19:59 +0100
commit92a02c34628343153b33602eae00cef46e28d191 (patch)
tree8622ec528d24e456be22d984d93aa9bcafc97399 /examples/lib-dfscq-log/src/bracket.rs
downloaddiaphragm-92a02c34628343153b33602eae00cef46e28d191.tar.gz
diaphragm-92a02c34628343153b33602eae00cef46e28d191.zip
WIP
Diffstat (limited to 'examples/lib-dfscq-log/src/bracket.rs')
-rw-r--r--examples/lib-dfscq-log/src/bracket.rs42
1 files changed, 42 insertions, 0 deletions
diff --git a/examples/lib-dfscq-log/src/bracket.rs b/examples/lib-dfscq-log/src/bracket.rs
new file mode 100644
index 0000000..02bca8d
--- /dev/null
+++ b/examples/lib-dfscq-log/src/bracket.rs
@@ -0,0 +1,42 @@
1use diaphragm_core::{
2 core_shapes::StraightPath, types::ShapeContext, ComplexShape, DrawResult, Drawable,
3 SolverContext,
4};
5
6#[derive(Copy, Clone)]
7pub enum BracketType {
8 Opening,
9 Closing,
10}
11
12#[derive(Clone)]
13pub struct Bracket {
14 pub r#type: BracketType,
15}
16
17impl ComplexShape for Bracket {
18 fn draw(&self, context: &ShapeContext, solver: &mut dyn SolverContext) -> DrawResult {
19 let mut result = DrawResult::new();
20
21 let bounds = context.bounds();
22
23 let path = match self.r#type {
24 BracketType::Opening => StraightPath::new(vec![
25 bounds.top_right(solver),
26 bounds.top_left(solver),
27 bounds.bottom_left(solver),
28 bounds.bottom_right(solver),
29 ]),
30 BracketType::Closing => StraightPath::new(vec![
31 bounds.top_left(solver),
32 bounds.top_right(solver),
33 bounds.bottom_right(solver),
34 bounds.bottom_left(solver),
35 ]),
36 };
37
38 result.push(Drawable::new(path, context.clone()));
39
40 result
41 }
42}