summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJovansonlee Cesar <ivanceras@gmail.com>2022-09-23 23:50:05 +0800
committerJovansonlee Cesar <ivanceras@gmail.com>2022-09-23 23:50:05 +0800
commit5ee9d09afcac70a3be2f71ebf91943da95b7642d (patch)
treec202b29dd633612c8ce346a07602db711fe04962
parent8159804691692403d28baafd4cd23645db468453 (diff)
fix: test, circle map has changed on this radius
-rw-r--r--packages/svgbob/src/buffer/cell_buffer.rs12
-rw-r--r--packages/svgbob/src/buffer/cell_buffer/contacts.rs1
-rw-r--r--packages/svgbob/src/buffer/cell_buffer/span.rs8
-rw-r--r--packages/svgbob/src/buffer/cell_buffer/span/test_span.rs25
-rw-r--r--packages/svgbob/src/buffer/fragment_buffer.rs7
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]);
}