summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJovansonlee Cesar <ivanceras@gmail.com>2020-11-25 19:26:48 +0800
committerJovansonlee Cesar <ivanceras@gmail.com>2020-11-25 19:26:48 +0800
commit30fa9c56f67fef0b7317b2e3679035b69461f68c (patch)
tree9d4c0ae41eba3ffc1d5be1381f9d3cd3e3910bb4
parent85fb99fb7789972f95f3fe4f902e9f53159773af (diff)
simplify the properties of unit circles for (*,o,O) to simplify merging to lines
-rw-r--r--svgbob/src/buffer/fragment_buffer/fragment/line.rs90
-rw-r--r--svgbob/src/map/ascii_map.rs77
-rw-r--r--svgbob/test_data/merge.bob6
3 files changed, 59 insertions, 114 deletions
diff --git a/svgbob/src/buffer/fragment_buffer/fragment/line.rs b/svgbob/src/buffer/fragment_buffer/fragment/line.rs
index 6de5bd3..93c0ed4 100644
--- a/svgbob/src/buffer/fragment_buffer/fragment/line.rs
+++ b/svgbob/src/buffer/fragment_buffer/fragment/line.rs
@@ -192,6 +192,7 @@ impl Line {
}
}
+ /*
/// if this line is colliean with the marker line and the
pub(crate) fn can_merge_marker_line(&self, mline: &MarkerLine) -> bool {
if self.can_merge(&mline.line) {
@@ -209,60 +210,55 @@ impl Line {
false
}
}
+ */
- /*
pub(crate) fn merge_marker_line(&self, mline: &MarkerLine) -> Option<Fragment> {
- if self.can_merge_marker_line(mline) {
- if mline.start_marker.is_none() {
- if self.end == mline.line.start {
- Some(marker_line(
- self.start,
- mline.line.end,
- mline.line.is_broken,
- None,
- mline.end_marker.clone(),
- ))
- } else if self.start == mline.line.start {
- Some(marker_line(
- self.end,
- mline.line.end,
- mline.line.is_broken,
- None,
- mline.end_marker.clone(),
- ))
- } else {
- None
- }
- } else if mline.end_marker.is_none() {
- if self.end == mline.line.end {
- println!("success 3");
- Some(marker_line(
- self.start,
- mline.line.start,
- mline.line.is_broken,
- mline.start_marker.clone(),
- None,
- ))
- } else if self.start == mline.line.end {
- println!("success 4");
- Some(marker_line(
- self.end,
- mline.line.start,
- mline.line.is_broken,
- mline.start_marker.clone(),
- None,
- ))
- } else {
- None
- }
+ if mline.start_marker.is_none() {
+ if self.end == mline.line.start {
+ Some(marker_line(
+ self.start,
+ mline.line.end,
+ mline.line.is_broken,
+ None,
+ mline.end_marker.clone(),
+ ))
+ } else if self.start == mline.line.start {
+ Some(marker_line(
+ self.end,
+ mline.line.end,
+ mline.line.is_broken,
+ None,
+ mline.end_marker.clone(),
+ ))
} else {
- panic!("marker line should have at least one marker");
+ None
+ }
+ } else if mline.end_marker.is_none() {
+ if self.end == mline.line.end {
+ println!("success 3");
+ Some(marker_line(
+ self.start,
+ mline.line.start,
+ mline.line.is_broken,
+ mline.start_marker.clone(),
+ None,
+ ))
+ } else if self.start == mline.line.end {
+ println!("success 4");
+ Some(marker_line(
+ self.end,
+ mline.line.start,
+ mline.line.is_broken,
+ mline.start_marker.clone(),
+ None,
+ ))
+ } else {
+ None
}
} else {
- None
+ panic!("marker line should have at least one marker");
}
}
- */
pub(crate) fn is_touching_circle(&self, circle: &Circle) -> bool {
let center = circle.center;
diff --git a/svgbob/src/map/ascii_map.rs b/svgbob/src/map/ascii_map.rs
index c340b20..68d0de9 100644
--- a/svgbob/src/map/ascii_map.rs
+++ b/svgbob/src/map/ascii_map.rs
@@ -318,29 +318,16 @@ lazy_static! {
Arc::new(
move|settings, top_left, top, top_right, left, right, bottom_left, bottom, bottom_right| {
vec![
- (true, vec![circle(m,unit2, true)]),
- // -*
- (left.line_strongly_overlap(m,o), vec![line(m,k)]),
- // *-
- (right.line_strongly_overlap(k,l), vec![line(m,o)]),
- // |
- // *
- (top.line_strongly_overlap(r,w), vec![line(m,c)]),
- // *
- // |
- (bottom.line_strongly_overlap(c,h), vec![line(m,w)]),
- // \
- // *
- (top_left.line_strongly_overlap(s,y), vec![line(m,a)]),
- // /
- // *
- (top_right.line_strongly_overlap(u,q), vec![line(m,e)]),
- // *
- // /
- (bottom_left.line_strongly_overlap(e,i), vec![line(m,u)]),
- // *
- // \
- (bottom_right.line_strongly_overlap(a,g), vec![line(m,y)]),
+
+ // must have at least one connection
+ // \|/
+ // -*-
+ // /|\
+ (top.line_strongly_overlap(r,w) || bottom.line_strongly_overlap(c,h)
+ || left.line_strongly_overlap(n,o) || right.line_strongly_overlap(k,l)
+ || top_left.line_strongly_overlap(s,y)|| bottom_right.line_strongly_overlap(a,g)
+ || bottom_left.line_strongly_overlap(u,q) || top_right.line_strongly_overlap(e,i),
+ vec![circle(m,unit1,true)]),
]
}
)
@@ -401,28 +388,6 @@ lazy_static! {
|| top_left.line_strongly_overlap(s,y)|| bottom_right.line_strongly_overlap(a,g)
|| bottom_left.line_strongly_overlap(u,q) || top_right.line_strongly_overlap(e,i),
vec![circle(m,unit1,false)]),
- // -o
- (left.line_strongly_overlap(m,o), vec![line(m,k)]),
- // o-
- (right.line_strongly_overlap(k,l), vec![line(m,o)]),
- // |
- // o
- (top.line_strongly_overlap(r,w), vec![line(m,c)]),
- // o
- // |
- (bottom.line_strongly_overlap(c,h), vec![line(m,w)]),
- // \
- // o
- (top_left.line_strongly_overlap(s,y), vec![line(m,a)]),
- // /
- // o
- (top_right.line_strongly_overlap(u,q), vec![line(m,e)]),
- // o
- // /
- (bottom_left.line_strongly_overlap(e,i), vec![line(m,u)]),
- // o
- // \
- (bottom_right.line_strongly_overlap(a,g), vec![line(m,y)]),
]
}
)
@@ -449,28 +414,6 @@ lazy_static! {
|| left.line_strongly_overlap(n,o) || right.line_strongly_overlap(k,l)
|| top_left.line_strongly_overlap(s,y)|| bottom_right.line_strongly_overlap(a,g)
|| bottom_left.line_strongly_overlap(u,q) || top_right.line_strongly_overlap(e,i), vec![circle(m,unit2,false)]),
- // -O
- (left.line_strongly_overlap(m,o), vec![line(m,k)]),
- // O-
- (right.line_strongly_overlap(k,l), vec![line(m,o)]),
- // |
- // O
- (top.line_strongly_overlap(r,w), vec![line(m,c)]),
- // O
- // |
- (bottom.line_strongly_overlap(c,h), vec![line(m,w)]),
- // \
- // O
- (top_left.line_strongly_overlap(s,y), vec![line(m,a)]),
- // /
- // O
- (top_right.line_strongly_overlap(u,q), vec![line(m,e)]),
- // O
- // /
- (bottom_left.line_strongly_overlap(e,i), vec![line(m,u)]),
- // O
- // \
- (bottom_right.line_strongly_overlap(a,g), vec![line(m,y)]),
]
}
)
diff --git a/svgbob/test_data/merge.bob b/svgbob/test_data/merge.bob
index 87cc671..00fb0ac 100644
--- a/svgbob/test_data/merge.bob
+++ b/svgbob/test_data/merge.bob
@@ -101,6 +101,12 @@
------O \ / \
+ o------ o o o o
+ \ / o \ /
+ ------o \ / \ \ /
+ o o
+
+
\ / #
\ / \
# # \