WIP: next part of region refactoring.

This commit is contained in:
Matthias Koefferlein 2018-11-05 00:25:16 +01:00
parent 5a5051b0dd
commit 7062c4acf5
4 changed files with 5 additions and 10 deletions

View File

@ -724,7 +724,6 @@ Edges::select_interacting (const Region &other)
scanner.insert ((char *) &*e, 0);
}
other.ensure_valid_polygons ();
for (Region::const_iterator p = other.begin (); ! p.at_end (); ++p) {
scanner.insert ((char *) &*p + 1, 1);
}
@ -754,7 +753,6 @@ Edges::select_not_interacting (const Region &other)
scanner.insert ((char *) &*e, 0);
}
other.ensure_valid_polygons ();
for (Region::const_iterator p = other.begin (); ! p.at_end (); ++p) {
scanner.insert ((char *) &*p + 1, 1);
}

View File

@ -581,12 +581,11 @@ public:
* This method will keep all edges for which the filter returns true.
* Merged semantics applies.
*/
template <class F>
Edges &filter (F &filter)
Edges &filter (EdgeFilterBase &filter)
{
edge_iterator_type ew = m_edges.get_layer<db::Edge, db::unstable_layer_tag> ().begin ();
for (const_iterator e = begin_merged (); ! e.at_end (); ++e) {
if (filter (*e)) {
if (filter.selected (*e)) {
if (ew == m_edges.get_layer<db::Edge, db::unstable_layer_tag> ().end ()) {
m_edges.get_layer<db::Edge, db::unstable_layer_tag> ().insert (*e);
ew = m_edges.get_layer<db::Edge, db::unstable_layer_tag> ().end ();
@ -609,12 +608,11 @@ public:
* conform to the filter criterion.
* Merged semantics applies.
*/
template <class F>
Edges filtered (F &filter) const
Edges filtered (const EdgeFilterBase &filter) const
{
Edges d;
for (const_iterator e = begin_merged (); ! e.at_end (); ++e) {
if (filter (*e)) {
if (filter.selected (*e)) {
d.insert (*e);
}
}

View File

@ -3422,6 +3422,7 @@ private:
Region selected_interacting_generic (const Edges &other, bool inverse) const;
void select_interacting_generic (const Edges &other, bool inverse);
};
#endif
/**
* @brief A polygon receiver putting the polygons into a Region object
@ -3466,7 +3467,6 @@ private:
Region *mp_region;
bool m_clear;
};
#endif
} // namespace db

View File

@ -237,7 +237,6 @@ TEST(3)
tp.input ("i2", ir2.begin_iter ().first, ir2.begin_iter ().second);
EXPECT_EQ (ir2.has_valid_polygons (), false);
db::Region ir3 (db::RecursiveShapeIterator (ly, ly.cell (top), l3));
ir3.ensure_valid_polygons ();
tp.input ("i3", ir3.begin_iter ().first, ir3.begin_iter ().second);
EXPECT_EQ (ir3.has_valid_polygons (), true);
tp.output ("o1", ly, top, o1);