edge merge does not destroy dots now

This commit is contained in:
Matthias Koefferlein 2024-03-06 22:17:01 +01:00
parent 4ecf6a9ce1
commit 9d6a6258aa
3 changed files with 6 additions and 11 deletions

View File

@ -606,7 +606,7 @@ private:
for (std::list<std::pair<const db::Shapes *, db::ICplxTrans> >::const_iterator i = merged_child_clusters.begin (); i != merged_child_clusters.end (); ++i) {
for (db::Shapes::shape_iterator s = i->first->begin (db::ShapeIterator::All); ! s.at_end (); ++s) {
if (s->is_edge () && ! s->edge ().is_degenerate ()) {
if (s->is_edge ()) {
heap.push_back (s->edge ().transformed (i->second));
m_scanner.insert (&heap.back (), 0);
}
@ -614,10 +614,8 @@ private:
}
for (db::local_cluster<db::Edge>::shape_iterator s = c.begin (m_layer); !s.at_end (); ++s) {
if (! s->is_degenerate ()) {
heap.push_back (*s);
m_scanner.insert (&heap.back (), 0);
}
heap.push_back (*s);
m_scanner.insert (&heap.back (), 0);
}
// .. and run the merge operation
@ -989,10 +987,7 @@ EdgesDelegate *DeepEdges::intersections (const Edges &other) const
} else {
db::DeepEdges *res = new DeepEdges (and_or_not_with (other_deep, EdgeIntersections).first);
// this is to preserve dots in later steps
res->set_merged_semantics (false);
return res;
return new DeepEdges (and_or_not_with (other_deep, EdgeIntersections).first);
}
}

View File

@ -1395,11 +1395,11 @@ TEST(21_EdgeMergeWithDots)
eee.insert_into (&ly, top_cell.cell_index (), l3);
eee = db::Edges (db::RecursiveShapeIterator (ly, top_cell, l3), dss);
EXPECT_EQ (e.merged ().to_string (), "(0,0;100,0)");
EXPECT_EQ (e.merged ().to_string (), "(0,0;100,0);(110,0;110,0)");
// dots do not participate in merge
EXPECT_EQ (ee.merged ().to_string (), "(0,0;110,0)");
// dots do not participate in merge
EXPECT_EQ (eee.merged ().to_string (), "");
EXPECT_EQ (eee.merged ().to_string (), "(110,0;110,0)");
}
TEST(22_InteractingWithCount)

Binary file not shown.