mirror of https://github.com/KLayout/klayout.git
Fixed #63 (wrong output on DRC non_interacting with empty second input)
This commit is contained in:
parent
2de6b691b4
commit
ed945a28d4
|
|
@ -828,8 +828,13 @@ Region::selected_interacting_generic (const Region &other, int mode, bool touchi
|
||||||
db::EdgeProcessor ep (m_report_progress, m_progress_desc);
|
db::EdgeProcessor ep (m_report_progress, m_progress_desc);
|
||||||
|
|
||||||
// shortcut
|
// shortcut
|
||||||
if (empty () || other.empty ()) {
|
if (empty ()) {
|
||||||
if (mode <= 0) {
|
return *this;
|
||||||
|
} else if (other.empty ()) {
|
||||||
|
// clear, if b is empty and
|
||||||
|
// * mode is inside or interacting and inverse is false ("inside" or "interacting")
|
||||||
|
// * mode is outside and inverse is true ("not outside")
|
||||||
|
if ((mode <= 0) != inverse) {
|
||||||
return Region ();
|
return Region ();
|
||||||
} else {
|
} else {
|
||||||
return *this;
|
return *this;
|
||||||
|
|
@ -879,8 +884,13 @@ void
|
||||||
Region::select_interacting_generic (const Region &other, int mode, bool touching, bool inverse)
|
Region::select_interacting_generic (const Region &other, int mode, bool touching, bool inverse)
|
||||||
{
|
{
|
||||||
// shortcut
|
// shortcut
|
||||||
if (empty () || other.empty ()) {
|
if (empty ()) {
|
||||||
if (mode <= 0) {
|
return;
|
||||||
|
} else if (other.empty ()) {
|
||||||
|
// clear, if b is empty and
|
||||||
|
// * mode is inside or interacting and inverse is false ("inside" or "interacting")
|
||||||
|
// * mode is outside and inverse is true ("not outside")
|
||||||
|
if ((mode <= 0) != inverse) {
|
||||||
clear ();
|
clear ();
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ def run_testsuite(dm, ic, tiled = false)
|
||||||
c = input(3)
|
c = input(3)
|
||||||
x = input(10)
|
x = input(10)
|
||||||
y = input(11)
|
y = input(11)
|
||||||
|
empty = input(1000)
|
||||||
|
|
||||||
h = {}
|
h = {}
|
||||||
layers.each { |l| h[l] = true }
|
layers.each { |l| h[l] = true }
|
||||||
|
|
@ -123,6 +124,9 @@ def run_testsuite(dm, ic, tiled = false)
|
||||||
message "--- interacting, in, not_in #{lb}"
|
message "--- interacting, in, not_in #{lb}"
|
||||||
|
|
||||||
b.interacting(a).output(lb, dm)
|
b.interacting(a).output(lb, dm)
|
||||||
|
b.not_interacting(a).output(lb, dm + 1)
|
||||||
|
b.interacting(empty).output(lb, dm + 2)
|
||||||
|
b.not_interacting(empty).output(lb, dm + 3)
|
||||||
b.interacting(a).in(b).output(lb + 1, dm)
|
b.interacting(a).in(b).output(lb + 1, dm)
|
||||||
(b|a).not_in(b).output(lb + 2, dm)
|
(b|a).not_in(b).output(lb + 2, dm)
|
||||||
x.in(b).output(lb + 3, dm)
|
x.in(b).output(lb + 3, dm)
|
||||||
|
|
@ -132,21 +136,73 @@ def run_testsuite(dm, ic, tiled = false)
|
||||||
message "--- inside, outside, overlapping, interacting #{lb}"
|
message "--- inside, outside, overlapping, interacting #{lb}"
|
||||||
|
|
||||||
b.inside(c).output(lb, dm)
|
b.inside(c).output(lb, dm)
|
||||||
|
b.not_inside(c).output(lb, dm + 1)
|
||||||
|
b.inside(empty).output(lb, dm + 2)
|
||||||
|
b.not_inside(empty).output(lb, dm + 3)
|
||||||
b.outside(c).output(lb + 1, dm)
|
b.outside(c).output(lb + 1, dm)
|
||||||
|
b.not_outside(c).output(lb + 1, dm + 1)
|
||||||
|
b.outside(empty).output(lb + 1, dm + 2)
|
||||||
|
b.not_outside(empty).output(lb + 1, dm + 3)
|
||||||
b.overlapping(c).output(lb + 2, dm)
|
b.overlapping(c).output(lb + 2, dm)
|
||||||
|
b.not_overlapping(c).output(lb + 2, dm + 1)
|
||||||
|
b.overlapping(empty).output(lb + 2, dm + 2)
|
||||||
|
b.not_overlapping(empty).output(lb + 2, dm + 3)
|
||||||
b.interacting(c).output(lb + 3, dm)
|
b.interacting(c).output(lb + 3, dm)
|
||||||
|
b.not_interacting(c).output(lb + 3, dm + 1)
|
||||||
|
b.interacting(empty).output(lb + 3, dm + 2)
|
||||||
|
b.not_interacting(empty).output(lb + 3, dm + 3)
|
||||||
bdup = b.dup
|
bdup = b.dup
|
||||||
bdup.select_inside(c)
|
bdup.select_inside(c)
|
||||||
bdup.xor(b.inside(c)).output(lb + 4, dm)
|
bdup.xor(b.inside(c)).output(lb + 4, dm)
|
||||||
bdup = b.dup
|
bdup = b.dup
|
||||||
|
bdup.select_not_inside(c)
|
||||||
|
bdup.output(lb + 4, dm + 1)
|
||||||
|
bdup = b.dup
|
||||||
|
bdup.select_inside(empty)
|
||||||
|
bdup.output(lb + 4, dm + 2)
|
||||||
|
bdup = b.dup
|
||||||
|
bdup.select_not_inside(empty)
|
||||||
|
bdup.output(lb + 4, dm + 3)
|
||||||
|
bdup = b.dup
|
||||||
bdup.select_outside(c)
|
bdup.select_outside(c)
|
||||||
bdup.xor(b.outside(c)).output(lb + 5, dm)
|
bdup.xor(b.outside(c)).output(lb + 5, dm)
|
||||||
bdup = b.dup
|
bdup = b.dup
|
||||||
|
bdup.select_not_outside(c)
|
||||||
|
bdup.output(lb + 5, dm + 1)
|
||||||
|
bdup = b.dup
|
||||||
|
bdup.select_outside(empty)
|
||||||
|
bdup.output(lb + 5, dm + 2)
|
||||||
|
bdup = b.dup
|
||||||
|
bdup.select_not_outside(empty)
|
||||||
|
bdup.output(lb + 5, dm + 3)
|
||||||
|
bdup = b.dup
|
||||||
bdup.select_overlapping(c)
|
bdup.select_overlapping(c)
|
||||||
bdup.xor(b.overlapping(c)).output(lb + 6, dm)
|
bdup.xor(b.overlapping(c)).output(lb + 6, dm)
|
||||||
bdup = b.dup
|
bdup = b.dup
|
||||||
|
bdup.select_not_overlapping(c)
|
||||||
|
bdup.output(lb + 6, dm + 1)
|
||||||
|
bdup = b.dup
|
||||||
|
bdup.select_overlapping(empty)
|
||||||
|
bdup.output(lb + 6, dm + 2)
|
||||||
|
bdup = b.dup
|
||||||
|
bdup.select_not_overlapping(empty)
|
||||||
|
bdup.output(lb + 6, dm + 3)
|
||||||
|
bdup = b.dup
|
||||||
bdup.select_interacting(c)
|
bdup.select_interacting(c)
|
||||||
bdup.xor(b.interacting(c)).output(lb + 7, dm)
|
bdup.xor(b.interacting(c)).output(lb + 7, dm)
|
||||||
|
bdup = b.dup
|
||||||
|
bdup.select_not_interacting(c)
|
||||||
|
bdup.output(lb + 7, dm + 1)
|
||||||
|
bdup = b.dup
|
||||||
|
bdup.select_interacting(empty)
|
||||||
|
bdup.output(lb + 7, dm + 2)
|
||||||
|
bdup = b.dup
|
||||||
|
bdup.select_not_interacting(empty)
|
||||||
|
bdup.output(lb + 7, dm + 3)
|
||||||
|
b.inside(empty).output(lb + 8, dm)
|
||||||
|
b.not_inside(empty).output(lb + 8, dm + 1)
|
||||||
|
b.outside(empty).output(lb + 9, dm)
|
||||||
|
b.not_outside(empty).output(lb + 9, dm + 1)
|
||||||
|
|
||||||
lb += 10
|
lb += 10
|
||||||
message "--- merge #{lb}"
|
message "--- merge #{lb}"
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue