MCPcopy Create free account
hub / github.com/KLayout/klayout / test_10

Method test_10

testdata/ruby/dbBooleanTest.rb:588–681  ·  view source on GitHub ↗

shape merge

Source from the content-addressed store, hash-verified

586
587 # shape merge
588 def test_10
589
590 lay = RBA::Layout::new
591 cid_top = lay.add_cell( "TOP" )
592 cid_a = lay.add_cell( "A" )
593 li = RBA::LayerInfo::new
594 lid_a = lay.insert_layer( li )
595 lid_b = lay.insert_layer( li )
596 lay.cell( cid_top ).insert( RBA::CellInstArray::new( cid_a, RBA::Trans::new( 0, 0 ) ) )
597 lay.cell( cid_top ).insert( RBA::CellInstArray::new( cid_a, RBA::Trans::new( 200, 200 ) ) )
598 lay.cell( cid_a ).shapes( lid_a ).insert( RBA::Box::new( 0, 0, 1000, 1000 ) )
599 lay.cell( cid_a ).shapes( lid_b ).insert( RBA::Box::new( 100, 100, 300, 300 ) )
600
601 sp = RBA::ShapeProcessor::new
602
603 sh = RBA::Shapes::new
604
605 sp.merge( lay, lay.cell( cid_top ), lid_a, sh, true, 0, false, true )
606 assert_equal( sh2s(sh), "(0,0;0,1000;200,1000;200,1200;1200,1200;1200,200;1000,200;1000,0)" )
607
608 sp.merge( lay, lay.cell( cid_top ), lid_a, sh, true, 1, false, true )
609 assert_equal( sh2s(sh), "(200,200;200,1000;1000,1000;1000,200)" )
610
611 sp.merge( lay, lay.cell( cid_top ), lid_a, sh, false, 0, false, true )
612 assert_equal( sh2s(sh), "" )
613
614 sp.merge( lay, lay.cell( cid_a ), lid_a, sh, false, 0, false, true )
615 assert_equal( sh2s(sh), "(0,0;0,1000;1000,1000;1000,0)" )
616
617 sp.merge( lay, lay.cell( cid_top ), lid_b, sh, true, 0, false, true )
618 assert_equal( sh2s(sh), "(100,100;100,300;300,300;300,100);(300,300;300,500;500,500;500,300)" )
619
620 sp.merge( lay, lay.cell( cid_top ), lid_b, sh, true, 0, false, false )
621 assert_equal( sh2s(sh), "(100,100;100,300;300,300;300,500;500,500;500,300;300,300;300,100)" )
622
623 sha = []
624 lay.cell( cid_a ).shapes( lid_b ).each { |s| sha.push( s ) }
625 ee = sp.merge( sha, 0 )
626
627 assert_equal( a2s(ee), "(100,100;100,300);(300,100;100,100);(300,300;300,100);(100,300;300,300)" )
628
629 ee = sp.merge_to_polygon( sha, 0, true, false )
630
631 assert_equal( a2s(ee), "(100,100;100,300;300,300;300,100)" )
632
633 sha = []
634 tt = []
635 lay.cell( cid_a ).shapes( lid_a ).each { |s| sha.push( s ); tt.push( RBA::CplxTrans::new( RBA::Trans::new( 0, 0 ) ) ) }
636 lay.cell( cid_a ).shapes( lid_a ).each { |s| sha.push( s ); tt.push( RBA::CplxTrans::new( RBA::Trans::new( 200, 200 ) ) ) }
637 ee = sp.merge( sha, tt, 0 )
638
639 assert_equal( a2s(ee), "(0,0;0,1000);(1000,0;0,0);(1000,200;1000,0);(1200,200;1000,200);(1200,1200;1200,200);(0,1000;200,1000);(200,1000;200,1200);(200,1200;1200,1200)" )
640
641 sha = []
642 tt = []
643 lay.cell( cid_a ).shapes( lid_a ).each { |s| sha.push( s ); tt.push( RBA::CplxTrans::new( RBA::Trans::new( 0, 0 ) ) ) }
644 lay.cell( cid_a ).shapes( lid_a ).each { |s| sha.push( s ); tt.push( RBA::CplxTrans::new( RBA::Trans::new( 200, 200 ) ) ) }
645 ee = sp.merge_to_polygon( sha, tt, 0, true, false )

Callers

nothing calls this directly

Calls 9

sh2sFunction · 0.85
a2sFunction · 0.85
eachMethod · 0.80
add_cellMethod · 0.45
insert_layerMethod · 0.45
insertMethod · 0.45
cellMethod · 0.45
mergeMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected