diff options
author | Jovansonlee Cesar <ivanceras@gmail.com> | 2022-09-23 23:50:05 +0800 |
---|---|---|
committer | Jovansonlee Cesar <ivanceras@gmail.com> | 2022-09-23 23:50:05 +0800 |
commit | 5ee9d09afcac70a3be2f71ebf91943da95b7642d (patch) | |
tree | c202b29dd633612c8ce346a07602db711fe04962 | |
parent | 8159804691692403d28baafd4cd23645db468453 (diff) |
fix: test, circle map has changed on this radius
-rw-r--r-- | packages/svgbob/src/buffer/cell_buffer.rs | 12 | ||||
-rw-r--r-- | packages/svgbob/src/buffer/cell_buffer/contacts.rs | 1 | ||||
-rw-r--r-- | packages/svgbob/src/buffer/cell_buffer/span.rs | 8 | ||||
-rw-r--r-- | packages/svgbob/src/buffer/cell_buffer/span/test_span.rs | 25 | ||||
-rw-r--r-- | packages/svgbob/src/buffer/fragment_buffer.rs | 7 |
5 files changed, 44 insertions, 9 deletions
diff --git a/packages/svgbob/src/buffer/cell_buffer.rs b/packages/svgbob/src/buffer/cell_buffer.rs index 3b0b89b..d7f9553 100644 --- a/packages/svgbob/src/buffer/cell_buffer.rs +++ b/packages/svgbob/src/buffer/cell_buffer.rs @@ -147,6 +147,7 @@ impl CellBuffer { /// return fragments that are Rect, Circle, pub(crate) fn into_shapes_fragment(self) -> Vec<FragmentSpan> { let endorse = self.endorse_to_fragment_spans(); + println!("endorsed: {:#?}", endorse); endorse .accepted .into_iter() @@ -190,6 +191,14 @@ impl CellBuffer { .map(|contact| contact.as_ref().to_vec()) .collect(); + let accepted: Vec<FragmentSpan> = endorsed_fragments + .into_iter() + .flatten() + .chain(single_member_fragments.into_iter()) + .collect(); + Endorse { accepted, rejects } + + /* log::info!("rejects: {:#?}", rejects); let re_endorsed = Span::re_endorse(rejects); log::info!("re_endorsed: {:#?}", re_endorsed); @@ -213,6 +222,7 @@ impl CellBuffer { .map(|contacts| contacts.0) .collect(), } + */ } /// group nodes that can be group and the rest will be fragments @@ -706,7 +716,7 @@ mod tests { This is a text - .-. + ,-. ( ) `-' diff --git a/packages/svgbob/src/buffer/cell_buffer/contacts.rs b/packages/svgbob/src/buffer/cell_buffer/contacts.rs index 1c3cf49..649b63d 100644 --- a/packages/svgbob/src/buffer/cell_buffer/contacts.rs +++ b/packages/svgbob/src/buffer/cell_buffer/contacts.rs @@ -86,6 +86,7 @@ impl Contacts { let mut rejects: Vec<Contacts> = vec![]; for group in groups { if let Some(fragment) = group.endorse_rect() { + //TODO: use the fragment span at group.0 let span = group.span(); let fragment_span = FragmentSpan::new(span, fragment); accepted.push(fragment_span); diff --git a/packages/svgbob/src/buffer/cell_buffer/span.rs b/packages/svgbob/src/buffer/cell_buffer/span.rs index e3c106a..56a3e50 100644 --- a/packages/svgbob/src/buffer/cell_buffer/span.rs +++ b/packages/svgbob/src/buffer/cell_buffer/span.rs @@ -149,8 +149,9 @@ impl Span { self }; - let groups: Vec<Contacts> = un_endorsed_span.into(); - let rect_endorse = Contacts::endorse_rects(groups); + let un_endorsed_contacts: Vec<Contacts> = un_endorsed_span.into(); + let rect_endorse: Endorse<FragmentSpan, Contacts> = + Contacts::endorse_rects(un_endorsed_contacts); let mut endorse = Endorse { accepted, @@ -188,7 +189,9 @@ impl Span { grouped: Vec<Vec<FragmentSpan>>, ) -> Endorse<FragmentSpan, Contacts> { let spans: Vec<Span> = Self::extract_spans(grouped); + log::info!("spans: {:#?}", spans); let merge_spans = Span::merge_recursive(spans); + log::info!("merg_spans: {:#?}", merge_spans); let (accepted, rejects): (Vec<Vec<FragmentSpan>>, Vec<Vec<Contacts>>) = merge_spans @@ -203,6 +206,7 @@ impl Span { } } + //TODO: The absolute position is wrong here fn extract_spans(grouped: Vec<Vec<FragmentSpan>>) -> Vec<Span> { grouped .into_iter() diff --git a/packages/svgbob/src/buffer/cell_buffer/span/test_span.rs b/packages/svgbob/src/buffer/cell_buffer/span/test_span.rs index 0b885b0..e469e68 100644 --- a/packages/svgbob/src/buffer/cell_buffer/span/test_span.rs +++ b/packages/svgbob/src/buffer/cell_buffer/span/test_span.rs @@ -185,7 +185,10 @@ fn test_endorse_circle() { let span = adjacents.remove(0); let (top_left, _) = span.bounds().unwrap(); assert_eq!(top_left, Cell::new(8, 1)); - let (mut fragments, _groups) = span.endorse(); + let Endorse { + accepted: mut fragments, + rejects: _groups, + } = span.endorse(); for (i, frag) in fragments.iter().enumerate() { println!("frag {}:\n{}", i, frag); } @@ -216,7 +219,10 @@ fn test_endorse_circle_with_rect() { let span1 = adjacents.remove(0); let (top_left1, _) = span1.bounds().unwrap(); assert_eq!(top_left1, Cell::new(8, 1)); - let (mut fragments, _groups) = span1.endorse(); + let Endorse { + accepted: mut fragments, + rejects: _groups, + } = span1.endorse(); assert_eq!(fragments.len(), 2); let circle = fragments.remove(0); @@ -265,7 +271,10 @@ fn test_endorse_with_big_circle() { let span1 = adjacents.remove(0); let (top_left1, _) = span1.bounds().unwrap(); assert_eq!(top_left1, Cell::new(12, 3)); - let (mut fragments, _groups) = span1.endorse(); + let Endorse { + accepted: mut fragments, + rejects: _groups, + } = span1.endorse(); assert_eq!(fragments.len(), 1); let circle = fragments.remove(0); @@ -301,7 +310,10 @@ fn test_endorse_with_big_circle_extra_match() { let span1 = adjacents.remove(0); let (top_left1, _) = span1.bounds().unwrap(); assert_eq!(top_left1, Cell::new(12, 3)); - let (fragments, groups) = span1.endorse(); + let Endorse { + accepted: fragments, + rejects: groups, + } = span1.endorse(); assert_eq!(fragments.len(), 1); assert_eq!(groups.len(), 0); for (i, fragment) in groups.iter().enumerate() { @@ -354,7 +366,10 @@ fn test_endorse_arc() { let span = adjacents.remove(0); let (top_left, _) = span.bounds().unwrap(); assert_eq!(top_left, Cell::new(8, 1)); - let (mut fragments, _groups) = span.endorse(); + let Endorse { + accepted: mut fragments, + rejects: _groups, + } = span.endorse(); for (i, frag) in fragments.iter().enumerate() { println!("frag {}:\n{}", i, frag); } diff --git a/packages/svgbob/src/buffer/fragment_buffer.rs b/packages/svgbob/src/buffer/fragment_buffer.rs index fa2e983..80a5339 100644 --- a/packages/svgbob/src/buffer/fragment_buffer.rs +++ b/packages/svgbob/src/buffer/fragment_buffer.rs @@ -40,6 +40,7 @@ mod fragment_tree; /// 7├─┼─┼─┼─┤ │ │ │ │ │ /// 8└─┴─┴─┴─┘ U└─┴─┴─┴─┘Y /// ``` V W X +/// TODO: rename this to FragmentSpan Buffer #[derive(Debug, Default)] pub struct FragmentBuffer(BTreeMap<Cell, Vec<FragmentSpan>>); @@ -109,7 +110,11 @@ impl FragmentBuffer { fragment_span: FragmentSpan, ) { if let Some(existing) = self.get_mut(&cell) { - existing.push(fragment_span) + if !existing.contains(&fragment_span) { + existing.push(fragment_span); + } else { + println!("already contain a same fragment_span"); + } } else { self.insert(cell, vec![fragment_span]); } |