mirror of
https://github.com/KLayout/klayout.git
synced 2026-09-07 11:31:08 +02:00
Bug fixes.
This commit is contained in:
@@ -173,9 +173,9 @@ static void transform_deep_layer (db::DeepLayer &deep_layer, const Trans &t)
|
||||
|
||||
db::Cell &top_cell = layout.cell (*layout.begin_top_down ());
|
||||
|
||||
db::Shapes flat_shapes;
|
||||
db::Shapes flat_shapes (layout.is_editable ());
|
||||
for (db::RecursiveShapeIterator iter (layout, top_cell, deep_layer.layer ()); !iter.at_end (); ++iter) {
|
||||
flat_shapes.insert (iter->polygon ().transformed (t));
|
||||
flat_shapes.insert (iter->edge_pair ().transformed (iter.trans ()).transformed (t));
|
||||
}
|
||||
|
||||
layout.clear_layer (deep_layer.layer ());
|
||||
@@ -208,9 +208,9 @@ void DeepEdgePairs::flatten ()
|
||||
|
||||
db::Cell &top_cell = layout.cell (*layout.begin_top_down ());
|
||||
|
||||
db::Shapes flat_shapes;
|
||||
db::Shapes flat_shapes (layout.is_editable ());
|
||||
for (db::RecursiveShapeIterator iter (layout, top_cell, deep_layer ().layer ()); !iter.at_end (); ++iter) {
|
||||
flat_shapes.insert (iter->polygon ());
|
||||
flat_shapes.insert (iter->edge_pair ().transformed (iter.trans ()));
|
||||
}
|
||||
|
||||
layout.clear_layer (deep_layer ().layer ());
|
||||
|
||||
@@ -233,9 +233,9 @@ static void transform_deep_layer (db::DeepLayer &deep_layer, const Trans &t)
|
||||
|
||||
db::Cell &top_cell = layout.cell (*layout.begin_top_down ());
|
||||
|
||||
db::Shapes flat_shapes;
|
||||
db::Shapes flat_shapes (layout.is_editable ());
|
||||
for (db::RecursiveShapeIterator iter (layout, top_cell, deep_layer.layer ()); !iter.at_end (); ++iter) {
|
||||
flat_shapes.insert (iter->polygon ().transformed (t));
|
||||
flat_shapes.insert (iter->edge ().transformed (iter.trans ()).transformed (t));
|
||||
}
|
||||
|
||||
layout.clear_layer (deep_layer.layer ());
|
||||
@@ -268,9 +268,9 @@ void DeepEdges::flatten ()
|
||||
|
||||
db::Cell &top_cell = layout.cell (*layout.begin_top_down ());
|
||||
|
||||
db::Shapes flat_shapes;
|
||||
db::Shapes flat_shapes (layout.is_editable ());
|
||||
for (db::RecursiveShapeIterator iter (layout, top_cell, deep_layer ().layer ()); !iter.at_end (); ++iter) {
|
||||
flat_shapes.insert (iter->polygon ());
|
||||
flat_shapes.insert (iter->edge ().transformed (iter.trans ()));
|
||||
}
|
||||
|
||||
layout.clear_layer (deep_layer ().layer ());
|
||||
|
||||
@@ -242,9 +242,11 @@ static void transform_deep_layer (db::DeepLayer &deep_layer, const Trans &t)
|
||||
|
||||
db::Cell &top_cell = layout.cell (*layout.begin_top_down ());
|
||||
|
||||
db::Shapes flat_shapes;
|
||||
db::Shapes flat_shapes (layout.is_editable ());
|
||||
for (db::RecursiveShapeIterator iter (layout, top_cell, deep_layer.layer ()); !iter.at_end (); ++iter) {
|
||||
flat_shapes.insert (iter->polygon ().transformed (t));
|
||||
db::Polygon poly;
|
||||
iter->polygon (poly);
|
||||
flat_shapes.insert (poly.transformed (iter.trans ()).transformed (t));
|
||||
}
|
||||
|
||||
layout.clear_layer (deep_layer.layer ());
|
||||
@@ -277,9 +279,11 @@ void DeepRegion::flatten ()
|
||||
|
||||
db::Cell &top_cell = layout.cell (*layout.begin_top_down ());
|
||||
|
||||
db::Shapes flat_shapes;
|
||||
db::Shapes flat_shapes (layout.is_editable ());
|
||||
for (db::RecursiveShapeIterator iter (layout, top_cell, deep_layer ().layer ()); !iter.at_end (); ++iter) {
|
||||
flat_shapes.insert (iter->polygon ());
|
||||
db::Polygon poly;
|
||||
iter->polygon (poly);
|
||||
flat_shapes.insert (poly.transformed (iter.trans ()));
|
||||
}
|
||||
|
||||
layout.clear_layer (deep_layer ().layer ());
|
||||
|
||||
@@ -193,9 +193,11 @@ static void transform_deep_layer (db::DeepLayer &deep_layer, const Trans &t)
|
||||
|
||||
db::Cell &top_cell = layout.cell (*layout.begin_top_down ());
|
||||
|
||||
db::Shapes flat_shapes;
|
||||
db::Shapes flat_shapes (layout.is_editable ());
|
||||
for (db::RecursiveShapeIterator iter (layout, top_cell, deep_layer.layer ()); !iter.at_end (); ++iter) {
|
||||
flat_shapes.insert (iter->polygon ().transformed (t));
|
||||
db::Text text;
|
||||
iter->text (text);
|
||||
flat_shapes.insert (text.transformed (iter.trans ()).transformed (t));
|
||||
}
|
||||
|
||||
layout.clear_layer (deep_layer.layer ());
|
||||
@@ -228,9 +230,11 @@ void DeepTexts::flatten ()
|
||||
|
||||
db::Cell &top_cell = layout.cell (*layout.begin_top_down ());
|
||||
|
||||
db::Shapes flat_shapes;
|
||||
db::Shapes flat_shapes (layout.is_editable ());
|
||||
for (db::RecursiveShapeIterator iter (layout, top_cell, deep_layer ().layer ()); !iter.at_end (); ++iter) {
|
||||
flat_shapes.insert (iter->polygon ());
|
||||
db::Text text;
|
||||
iter->text (text);
|
||||
flat_shapes.insert (db::TextRef (text.transformed (iter.trans ()), layout.shape_repository ()));
|
||||
}
|
||||
|
||||
layout.clear_layer (deep_layer ().layer ());
|
||||
|
||||
@@ -413,9 +413,14 @@ void
|
||||
FlatRegion::do_insert (const db::Polygon &polygon)
|
||||
{
|
||||
if (polygon.holes () > 0 || polygon.vertices () > 0) {
|
||||
|
||||
bool is_box = (empty () && polygon.is_box ());
|
||||
|
||||
mp_polygons->insert (polygon);
|
||||
m_is_merged = false;
|
||||
set_is_merged (is_box);
|
||||
|
||||
invalidate_cache ();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -50,7 +50,9 @@ void
|
||||
MutableTexts::insert (const db::Shape &shape)
|
||||
{
|
||||
if (shape.is_text ()) {
|
||||
insert (shape.text ());
|
||||
db::Text text;
|
||||
shape.text (text);
|
||||
insert (text);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ TEST(1)
|
||||
EXPECT_EQ (r.bbox ().to_string (), "(0,0;100,200)");
|
||||
EXPECT_EQ (r.transformed (db::Trans (db::Vector (1, 2))).bbox ().to_string (), "(1,2;101,202)");
|
||||
EXPECT_EQ (r.empty (), false);
|
||||
EXPECT_EQ (r.is_merged (), true);
|
||||
EXPECT_EQ (r.is_merged (), false);
|
||||
EXPECT_EQ (r.begin ().at_end (), false);
|
||||
|
||||
db::Edges r1 = r;
|
||||
|
||||
Reference in New Issue
Block a user