mirror of https://github.com/KLayout/klayout.git
WIP: next part of region refactoring.
This commit is contained in:
parent
5a5051b0dd
commit
7062c4acf5
|
|
@ -724,7 +724,6 @@ Edges::select_interacting (const Region &other)
|
||||||
scanner.insert ((char *) &*e, 0);
|
scanner.insert ((char *) &*e, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
other.ensure_valid_polygons ();
|
|
||||||
for (Region::const_iterator p = other.begin (); ! p.at_end (); ++p) {
|
for (Region::const_iterator p = other.begin (); ! p.at_end (); ++p) {
|
||||||
scanner.insert ((char *) &*p + 1, 1);
|
scanner.insert ((char *) &*p + 1, 1);
|
||||||
}
|
}
|
||||||
|
|
@ -754,7 +753,6 @@ Edges::select_not_interacting (const Region &other)
|
||||||
scanner.insert ((char *) &*e, 0);
|
scanner.insert ((char *) &*e, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
other.ensure_valid_polygons ();
|
|
||||||
for (Region::const_iterator p = other.begin (); ! p.at_end (); ++p) {
|
for (Region::const_iterator p = other.begin (); ! p.at_end (); ++p) {
|
||||||
scanner.insert ((char *) &*p + 1, 1);
|
scanner.insert ((char *) &*p + 1, 1);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -581,12 +581,11 @@ public:
|
||||||
* This method will keep all edges for which the filter returns true.
|
* This method will keep all edges for which the filter returns true.
|
||||||
* Merged semantics applies.
|
* Merged semantics applies.
|
||||||
*/
|
*/
|
||||||
template <class F>
|
Edges &filter (EdgeFilterBase &filter)
|
||||||
Edges &filter (F &filter)
|
|
||||||
{
|
{
|
||||||
edge_iterator_type ew = m_edges.get_layer<db::Edge, db::unstable_layer_tag> ().begin ();
|
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) {
|
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 ()) {
|
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);
|
m_edges.get_layer<db::Edge, db::unstable_layer_tag> ().insert (*e);
|
||||||
ew = m_edges.get_layer<db::Edge, db::unstable_layer_tag> ().end ();
|
ew = m_edges.get_layer<db::Edge, db::unstable_layer_tag> ().end ();
|
||||||
|
|
@ -609,12 +608,11 @@ public:
|
||||||
* conform to the filter criterion.
|
* conform to the filter criterion.
|
||||||
* Merged semantics applies.
|
* Merged semantics applies.
|
||||||
*/
|
*/
|
||||||
template <class F>
|
Edges filtered (const EdgeFilterBase &filter) const
|
||||||
Edges filtered (F &filter) const
|
|
||||||
{
|
{
|
||||||
Edges d;
|
Edges d;
|
||||||
for (const_iterator e = begin_merged (); ! e.at_end (); ++e) {
|
for (const_iterator e = begin_merged (); ! e.at_end (); ++e) {
|
||||||
if (filter (*e)) {
|
if (filter.selected (*e)) {
|
||||||
d.insert (*e);
|
d.insert (*e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3422,6 +3422,7 @@ private:
|
||||||
Region selected_interacting_generic (const Edges &other, bool inverse) const;
|
Region selected_interacting_generic (const Edges &other, bool inverse) const;
|
||||||
void select_interacting_generic (const Edges &other, bool inverse);
|
void select_interacting_generic (const Edges &other, bool inverse);
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief A polygon receiver putting the polygons into a Region object
|
* @brief A polygon receiver putting the polygons into a Region object
|
||||||
|
|
@ -3466,7 +3467,6 @@ private:
|
||||||
Region *mp_region;
|
Region *mp_region;
|
||||||
bool m_clear;
|
bool m_clear;
|
||||||
};
|
};
|
||||||
#endif
|
|
||||||
|
|
||||||
} // namespace db
|
} // namespace db
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -237,7 +237,6 @@ TEST(3)
|
||||||
tp.input ("i2", ir2.begin_iter ().first, ir2.begin_iter ().second);
|
tp.input ("i2", ir2.begin_iter ().first, ir2.begin_iter ().second);
|
||||||
EXPECT_EQ (ir2.has_valid_polygons (), false);
|
EXPECT_EQ (ir2.has_valid_polygons (), false);
|
||||||
db::Region ir3 (db::RecursiveShapeIterator (ly, ly.cell (top), l3));
|
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);
|
tp.input ("i3", ir3.begin_iter ().first, ir3.begin_iter ().second);
|
||||||
EXPECT_EQ (ir3.has_valid_polygons (), true);
|
EXPECT_EQ (ir3.has_valid_polygons (), true);
|
||||||
tp.output ("o1", ly, top, o1);
|
tp.output ("o1", ly, top, o1);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue