Fixed issue #1275 (size after smooth does not work)

This commit is contained in:
Matthias Koefferlein 2023-02-04 19:56:06 +01:00
parent e594842819
commit 026e0fa591
2 changed files with 44 additions and 0 deletions

View File

@ -201,6 +201,7 @@ RegionDelegate *FlatRegion::filter_in_place (const PolygonFilterBase &filter)
poly_layer_wp.erase (pw_wp, poly_layer_wp.end ());
mp_merged_polygons->clear ();
invalidate_cache ();
m_is_merged = filter.requires_raw_input () ? false : merged_semantics ();
return this;
@ -230,6 +231,7 @@ RegionDelegate *FlatRegion::process_in_place (const PolygonProcessorBase &filter
poly_layer_wp.swap (out_wp);
mp_merged_polygons->clear ();
invalidate_cache ();
m_is_merged = filter.result_is_merged () && merged_semantics ();
if (filter.result_must_not_be_merged ()) {

View File

@ -2022,3 +2022,45 @@ TEST(44_SizeWithProperties)
db::compare_layouts (_this, target, tl::testdata () + "/algo/flat_region_au44.gds");
}
TEST(100_Issue1275)
{
db::Point pts[] = {
db::Point (-21983, -43808),
db::Point (-37841, 16636),
db::Point (-20484, 35228),
db::Point (30428, 41627),
db::Point (38312, 28960),
db::Point (-7811, -37922)
};
db::Polygon polygon;
polygon.assign_hull (&pts[0], &pts[sizeof(pts) / sizeof(pts[0])]);
db::Region region;
region.insert (polygon);
region.smooth (100, false);
EXPECT_EQ (region.sized (100).to_string (), "(-22037,-43939;-22054,-43930;-37952,16664;-20532,35323;30479,41734;38432,28957;-7745,-38003)");
region = db::Region ();
region.insert (polygon);
region = region.smoothed (100, false);
EXPECT_EQ (region.sized (100).to_string (), "(-22037,-43939;-22054,-43930;-37952,16664;-20532,35323;30479,41734;38432,28957;-7745,-38003)");
db::RegionAreaFilter rf (0, 10000000000, false);
region = db::Region ();
region.insert (polygon);
region.filter (rf);
EXPECT_EQ (region.sized (100).to_string (), "(-22037,-43939;-22054,-43930;-37952,16664;-20532,35323;30479,41734;38432,28957;-7745,-38003)");
region = db::Region ();
region.insert (polygon);
region = region.filtered (rf);
EXPECT_EQ (region.sized (100).to_string (), "(-22037,-43939;-22054,-43930;-37952,16664;-20532,35323;30479,41734;38432,28957;-7745,-38003)");
}