mirror of https://github.com/KLayout/klayout.git
Bug fixes.
This commit is contained in:
parent
abd96c8400
commit
cefc2eeddb
|
|
@ -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;
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -179,12 +179,11 @@ class DBEdgePairs_TestClass < TestBase
|
|||
assert_equal(r.is_deep?, true)
|
||||
|
||||
r.flatten
|
||||
assert_equal(r.has_valid_edge_pairs?, true)
|
||||
assert_equal(r[1].to_s, "(0,101;2,103)/(10,111;12,113)")
|
||||
assert_equal(r[100].inspect, "nil")
|
||||
assert_equal(r.has_valid_edge_pairs?, false)
|
||||
assert_equal(r.to_s, "(0,1;2,3)/(10,11;12,13);(0,101;2,103)/(10,111;12,113);(200,101;202,103)/(210,111;212,113)")
|
||||
assert_equal(r.bbox.to_s, "(0,1;212,113)")
|
||||
|
||||
assert_equal(r.is_deep?, false)
|
||||
assert_equal(r.is_deep?, true)
|
||||
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ class DBEdges_TestClass < TestBase
|
|||
assert_equal(r.count, 4)
|
||||
assert_equal(r.hier_count, 4)
|
||||
assert_equal(r.bbox.to_s, "(10,20;100,200)")
|
||||
assert_equal(r.is_merged?, true)
|
||||
assert_equal(r.is_merged?, false)
|
||||
|
||||
assert_equal(r.moved(RBA::Point::new(10, 20)).bbox.to_s, "(20,40;110,220)")
|
||||
assert_equal(r.moved(10, 20).bbox.to_s, "(20,40;110,220)")
|
||||
|
|
@ -615,12 +615,11 @@ class DBEdges_TestClass < TestBase
|
|||
|
||||
r.flatten
|
||||
|
||||
assert_equal(r.is_deep?, false)
|
||||
assert_equal(r.is_deep?, true)
|
||||
|
||||
assert_equal(r.count, 12)
|
||||
assert_equal(r.hier_count, 12)
|
||||
assert_equal(r[1].to_s, "(-10,20;10,20)")
|
||||
assert_equal(r[100].to_s, "")
|
||||
assert_equal(r.to_s, "(-10,-20;-10,20);(-10,20;10,20);(10,20;10,-20);(10,-20;-10,-20);(-10,80;-10,120);(-10,120;10,120);(10,120;10,80);(10,80;-10,80);(190,80;190,120);(190,120;210,120)...")
|
||||
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ class DBRegion_TestClass < TestBase
|
|||
assert_equal(r.count, 1)
|
||||
assert_equal(r.hier_count, 1)
|
||||
assert_equal(r.bbox.to_s, "(10,20;100,200)")
|
||||
assert_equal(r.is_merged?, false)
|
||||
assert_equal(r.is_merged?, true)
|
||||
|
||||
r = RBA::Region::new(RBA::SimplePolygon::new(RBA::Box::new(10, 20, 100, 200)))
|
||||
assert_equal(r.to_s, "(10,20;10,200;100,200;100,20)")
|
||||
|
|
@ -107,7 +107,7 @@ class DBRegion_TestClass < TestBase
|
|||
assert_equal(r.area, 90*180)
|
||||
assert_equal(r.perimeter, 2*90+2*180)
|
||||
assert_equal(r.perimeter(RBA::Box::new(0, 0, 50, 50)), 30+40)
|
||||
assert_equal(r.is_merged?, false)
|
||||
assert_equal(r.is_merged?, true)
|
||||
|
||||
r = RBA::Region::new(RBA::Path::new([ RBA::Point::new(0, 0), RBA::Point::new(100, 0) ], 20))
|
||||
assert_equal(r.to_s, "(0,-10;0,10;100,10;100,-10)")
|
||||
|
|
@ -116,7 +116,7 @@ class DBRegion_TestClass < TestBase
|
|||
assert_equal(r.count, 1)
|
||||
assert_equal(r.hier_count, 1)
|
||||
assert_equal(r.bbox.to_s, "(0,-10;100,10)")
|
||||
assert_equal(r.is_merged?, false)
|
||||
assert_equal(r.is_merged?, true)
|
||||
|
||||
r = RBA::Region::new( [
|
||||
RBA::Polygon::new(RBA::Box::new(10, 20, 100, 200)),
|
||||
|
|
@ -1002,7 +1002,7 @@ class DBRegion_TestClass < TestBase
|
|||
assert_equal(RBA::Region::new(target.cell("TRANS").shapes(target_li)).to_s, "")
|
||||
|
||||
r.flatten
|
||||
assert_equal(r.is_deep?, false)
|
||||
assert_equal(r.is_deep?, true)
|
||||
assert_equal(r.area, 53120000)
|
||||
|
||||
# force destroy, so the unit tests pass on the next iteration
|
||||
|
|
|
|||
|
|
@ -186,12 +186,10 @@ class DBTexts_TestClass < TestBase
|
|||
assert_equal(r.is_deep?, true)
|
||||
|
||||
r.flatten
|
||||
assert_equal(r.has_valid_texts?, true)
|
||||
assert_equal(r[1].to_s, "('abc',r0 100,-100)")
|
||||
assert_equal(r[100].inspect, "nil")
|
||||
assert_equal(r.to_s, "('abc',r0 100,-200);('abc',r0 100,-100);('abc',r0 300,-100)")
|
||||
assert_equal(r.bbox.to_s, "(100,-200;300,-100)")
|
||||
|
||||
assert_equal(r.is_deep?, false)
|
||||
assert_equal(r.is_deep?, true)
|
||||
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue