From 41fe04bbc87f411bf7ab005a5786dc77513d59be Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sun, 14 Jun 2020 17:00:54 +0200 Subject: [PATCH] WIP: twobool local processor --- src/db/unit_tests/dbHierProcessorTests.cc | 94 +++++++++++----------- testdata/algo/hlp17.oas | Bin 475 -> 505 bytes 2 files changed, 48 insertions(+), 46 deletions(-) diff --git a/src/db/unit_tests/dbHierProcessorTests.cc b/src/db/unit_tests/dbHierProcessorTests.cc index 16d102c1a..5672f0522 100644 --- a/src/db/unit_tests/dbHierProcessorTests.cc +++ b/src/db/unit_tests/dbHierProcessorTests.cc @@ -108,61 +108,63 @@ public: db::EdgeProcessor ep; - // 0: and, 1: not - for (unsigned int gen = 0; gen < 2; ++gen) { + std::unordered_set &result0 = results [0]; + std::unordered_set &result1 = results [1]; - std::unordered_set &result = results [gen]; - ep.clear (); + size_t p1 = 0, p2 = 1; - size_t p1 = 0, p2 = 1; - - std::set others; - for (db::shape_interactions::iterator i = interactions.begin (); i != interactions.end (); ++i) { - for (db::shape_interactions::iterator2 j = i->second.begin (); j != i->second.end (); ++j) { - others.insert (interactions.intruder_shape (*j).second); - } + std::set others; + for (db::shape_interactions::iterator i = interactions.begin (); i != interactions.end (); ++i) { + for (db::shape_interactions::iterator2 j = i->second.begin (); j != i->second.end (); ++j) { + others.insert (interactions.intruder_shape (*j).second); } + } - for (db::shape_interactions::iterator i = interactions.begin (); i != interactions.end (); ++i) { + for (db::shape_interactions::iterator i = interactions.begin (); i != interactions.end (); ++i) { - const db::PolygonRef &subject = interactions.subject_shape (i->first); - if (others.find (subject) != others.end ()) { - if (gen == 0) { - result.insert (subject); - } - } else if (i->second.empty ()) { - // shortcut (not: keep, and: drop) - if (gen != 0) { - result.insert (subject); - } - } else { - for (db::PolygonRef::polygon_edge_iterator e = subject.begin_edge (); ! e.at_end(); ++e) { - ep.insert (*e, p1); - } - p1 += 2; + const db::PolygonRef &subject = interactions.subject_shape (i->first); + if (others.find (subject) != others.end ()) { + result0.insert (subject); + } else if (i->second.empty ()) { + // shortcut (not: keep, and: drop) + result1.insert (subject); + } else { + for (db::PolygonRef::polygon_edge_iterator e = subject.begin_edge (); ! e.at_end(); ++e) { + ep.insert (*e, p1); } - - } - - if (! others.empty () || p1 > 0) { - - for (std::set::const_iterator o = others.begin (); o != others.end (); ++o) { - for (db::PolygonRef::polygon_edge_iterator e = o->begin_edge (); ! e.at_end(); ++e) { - ep.insert (*e, p2); - } - p2 += 2; - } - - db::BooleanOp op (gen == 0 ? db::BooleanOp::And : db::BooleanOp::ANotB); - db::PolygonRefGenerator pr (layout, result); - db::PolygonSplitter splitter (pr, area_ratio, max_vertex_count); - db::PolygonGenerator pg (splitter, true, true); - ep.set_base_verbosity (50); - ep.process (pg, op); - + p1 += 2; } } + + if (! others.empty () || p1 > 0) { + + for (std::set::const_iterator o = others.begin (); o != others.end (); ++o) { + for (db::PolygonRef::polygon_edge_iterator e = o->begin_edge (); ! e.at_end(); ++e) { + ep.insert (*e, p2); + } + p2 += 2; + } + + db::BooleanOp op0 (db::BooleanOp::And); + db::PolygonRefGenerator pr0 (layout, result0); + db::PolygonSplitter splitter0 (pr0, area_ratio, max_vertex_count); + db::PolygonGenerator pg0 (splitter0, true, true); + + db::BooleanOp op1 (db::BooleanOp::ANotB); + db::PolygonRefGenerator pr1 (layout, result1); + db::PolygonSplitter splitter1 (pr1, area_ratio, max_vertex_count); + db::PolygonGenerator pg1 (splitter1, true, true); + + ep.set_base_verbosity (50); + + std::vector > procs; + procs.push_back (std::make_pair (&pg0, &op0)); + procs.push_back (std::make_pair (&pg1, &op1)); + ep.process (procs); + + } + } }; diff --git a/testdata/algo/hlp17.oas b/testdata/algo/hlp17.oas index a40ff47668825b00c9ab8bc78d5d27a3c10e7cbf..5bb216b21980d3dd5985dc25279725ad4d195660 100644 GIT binary patch delta 90 zcmcc3{F8Y?qrW{P10z$1`X8~c%#B9e3=NV(qP9$oOfU35uw7u?$imIAMp{TzGX>=VJe7qg6#m0r~yQ5A)}}T!i0^RG#LSjwHb>5 delta 60 zcmey#e4BYfqoFY)10z$1`X8~c%%YY|j7%@|Kd@b3-N+)UnF133z{Vgdn7WWr)Bwag M!FGUW;{{Dd04XXFssI20