diff options
author | Jovansonlee Cesar <ivanceras@gmail.com> | 2020-11-25 19:26:48 +0800 |
---|---|---|
committer | Jovansonlee Cesar <ivanceras@gmail.com> | 2020-11-25 19:26:48 +0800 |
commit | 30fa9c56f67fef0b7317b2e3679035b69461f68c (patch) | |
tree | 9d4c0ae41eba3ffc1d5be1381f9d3cd3e3910bb4 | |
parent | 85fb99fb7789972f95f3fe4f902e9f53159773af (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.rs | 90 | ||||
-rw-r--r-- | svgbob/src/map/ascii_map.rs | 77 | ||||
-rw-r--r-- | svgbob/test_data/merge.bob | 6 |
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 + + \ / # \ / \ # # \ |