Bug fixes.

This commit is contained in:
Matthias Koefferlein 2021-03-29 01:05:53 +02:00
parent abd96c8400
commit cefc2eeddb
12 changed files with 46 additions and 35 deletions

View File

@ -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 ());

View File

@ -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 ());

View File

@ -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 ());

View File

@ -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 ());

View File

@ -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 ();
}
}

View File

@ -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);
}
}

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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