Fixed previous implementation - was not fully effective

This commit is contained in:
Matthias Koefferlein 2023-03-16 20:06:07 +01:00
parent 178cb29773
commit b979219007
1 changed files with 16 additions and 6 deletions

View File

@ -52,21 +52,31 @@ public:
mp_shapes->insert (t.transformed (m_trans));
}
template <class T>
void operator() (const db::Polygon &t)
template <class P>
void insert_polygon (const P &p)
{
if (t.is_box () && ! m_trans.is_complex ()) {
mp_shapes->insert (t.box ().transformed (m_trans));
if (p.is_box () && ! m_trans.is_complex ()) {
mp_shapes->insert (p.box ().transformed (m_trans));
} else {
if (mp_shapes->cell () && mp_shapes->cell ()->layout ()) {
db::PolygonRef pr (t.transformed (m_trans), mp_shapes->cell ()->layout ()->shape_repository ());
db::polygon_ref<P, db::Disp> pr (p.transformed (m_trans), mp_shapes->cell ()->layout ()->shape_repository ());
mp_shapes->insert (pr);
} else {
mp_shapes->insert (t.transformed (m_trans));
mp_shapes->insert (p.transformed (m_trans));
}
}
}
void operator() (const db::Polygon &p)
{
insert_polygon (p);
}
void operator() (const db::SimplePolygon &p)
{
insert_polygon (p);
}
void operator() (const db::EdgePair &ep)
{
mp_shapes->insert (ep.normalized ().to_polygon (m_ep_sizing).transformed (m_trans));