return LocalPartition( aFace, theType );
}
+bool HYDROData_LandCoverMap::Add( const TopoDS_Wire& theWire, const QString& theType )
+{
+ if( !theWire.Closed() )
+ return false;
+
+ TopoDS_Face aFace = BRepBuilderAPI_MakeFace( theWire, Standard_True ).Face();
+ return LocalPartition( aFace, theType );
+}
+
/**
Add a new polyline as land cover
@param thePolyline the polyline to add as land cover
return false;
TopoDS_Shape aShape = thePolyline->GetShape();
- if( aShape.ShapeType()!=TopAbs_WIRE )
- return false;
+ if( aShape.ShapeType()==TopAbs_WIRE )
+ return Add( TopoDS::Wire( aShape ), theType );
- TopoDS_Wire aWire = TopoDS::Wire( aShape );
- if( !aWire.Closed() )
- return false;
+ if( aShape.ShapeType()==TopAbs_COMPOUND )
+ {
+ TopExp_Explorer anExp( aShape, TopAbs_WIRE );
+ for( ; anExp.More(); anExp.Next() )
+ {
+ TopoDS_Wire aPart = TopoDS::Wire( anExp.Current() );
+ if( !Add( aPart, theType ) )
+ return false;
+ }
+ return true;
+ }
- TopoDS_Face aFace = BRepBuilderAPI_MakeFace( aWire, Standard_True ).Face();
- return LocalPartition( aFace, theType );
+ return false;
}
/**
CPPUNIT_ASSERT_EQUAL(0, remove(aSFileName.toStdString().c_str()));
}
+void test_HYDROData_LandCoverMap::test_add_2_section_poly()
+{
+ Handle(HYDROData_Document) aDoc = HYDROData_Document::Document( 1 );
+
+ Handle(HYDROData_PolylineXY) Polyline_12 =
+ Handle(HYDROData_PolylineXY)::DownCast( aDoc->CreateObject( KIND_POLYLINEXY ) );
+ Polyline_12->SetName( "Polyline_12" );
+
+ Polyline_12->AddSection( "Section_1", HYDROData_PolylineXY::SECTION_POLYLINE, true );
+ Polyline_12->AddPoint( 0, gp_XY( -148.70, 145.68 ) );
+ Polyline_12->AddPoint( 0, gp_XY( -81.71, 210.97 ) );
+ Polyline_12->AddPoint( 0, gp_XY( -21.09, 122.79 ) );
+ Polyline_12->AddPoint( 0, gp_XY( -106.30, 102.44 ) );
+ Polyline_12->AddSection( "Section_2", HYDROData_PolylineXY::SECTION_POLYLINE, true );
+ Polyline_12->AddPoint( 1, gp_XY( -7.09, 227.08 ) );
+ Polyline_12->AddPoint( 1, gp_XY( 46.32, 228.78 ) );
+ Polyline_12->AddPoint( 1, gp_XY( 69.64, 165.61 ) );
+ Polyline_12->AddPoint( 1, gp_XY( 13.68, 156.28 ) );
+
+ Polyline_12->Update();
+
+ Handle(HYDROData_LandCoverMap) LCM = Handle(HYDROData_LandCoverMap)::DownCast( aDoc->CreateObject( KIND_LAND_COVER_MAP ) );
+ CPPUNIT_ASSERT_EQUAL( true, LCM->Add( Polyline_12, "" ) );
+
+ TestViewer::show( LCM->GetShape(), AIS_Shaded, true, "lcm_poly_2_sections" );
+ CPPUNIT_ASSERT_IMAGES
+
+ aDoc->Close();
+}
+
+void test_HYDROData_LandCoverMap::test_split_2()
+{
+ Handle(HYDROData_Document) aDoc = HYDROData_Document::Document( 1 );
+
+ Handle(HYDROData_PolylineXY) Polyline_1 =
+ Handle(HYDROData_PolylineXY)::DownCast( aDoc->CreateObject( KIND_POLYLINEXY ) );
+ Polyline_1->AddSection( "Section_1", HYDROData_PolylineXY::SECTION_POLYLINE, true );
+ Polyline_1->AddPoint( 0, gp_XY( -264.84, 323.44 ) );
+ Polyline_1->AddPoint( 0, gp_XY( 254.45, 301.19 ) );
+ Polyline_1->AddPoint( 0, gp_XY( -291.54, -47.48 ) );
+ Polyline_1->Update();
+
+ Handle(HYDROData_PolylineXY) Polyline_6 =
+ Handle(HYDROData_PolylineXY)::DownCast( aDoc->CreateObject( KIND_POLYLINEXY ) );
+ Polyline_6->AddSection( "Section_1", HYDROData_PolylineXY::SECTION_POLYLINE, true );
+ Polyline_6->AddPoint( 0, gp_XY( -155.15, 199.47 ) );
+ Polyline_6->AddPoint( 0, gp_XY( -71.19, 289.12 ) );
+ Polyline_6->AddPoint( 0, gp_XY( 22.01, 211.57 ) );
+ Polyline_6->AddPoint( 0, gp_XY( -84.00, 134.73 ) );
+ Polyline_6->Update();
+
+ Handle(HYDROData_PolylineXY) Polyline_7 =
+ Handle(HYDROData_PolylineXY)::DownCast( aDoc->CreateObject( KIND_POLYLINEXY ) );
+ Polyline_7->AddSection( "Section_1", HYDROData_PolylineXY::SECTION_POLYLINE, true );
+ Polyline_7->AddPoint( 0, gp_XY( -50.56, 232.20 ) );
+ Polyline_7->AddPoint( 0, gp_XY( 40.51, 286.98 ) );
+ Polyline_7->AddPoint( 0, gp_XY( 118.77, 256.39 ) );
+ Polyline_7->AddPoint( 0, gp_XY( 72.52, 114.10 ) );
+ Polyline_7->Update();
+
+ Handle(HYDROData_PolylineXY) Polyline_8 =
+ Handle(HYDROData_PolylineXY)::DownCast( aDoc->CreateObject( KIND_POLYLINEXY ) );
+ Polyline_8->AddSection( "Section_1", HYDROData_PolylineXY::SECTION_POLYLINE, true );
+ Polyline_8->AddPoint( 0, gp_XY( -44.16, 190.93 ) );
+ Polyline_8->AddPoint( 0, gp_XY( 9.91, 226.51 ) );
+ Polyline_8->AddPoint( 0, gp_XY( 35.53, 175.99 ) );
+ Polyline_8->AddPoint( 0, gp_XY( -9.30, 157.50 ) );
+ Polyline_8->Update();
+
+ Handle(HYDROData_PolylineXY) Polyline_9 =
+ Handle(HYDROData_PolylineXY)::DownCast( aDoc->CreateObject( KIND_POLYLINEXY ) );
+ Polyline_9->AddSection( "Section_1", HYDROData_PolylineXY::SECTION_POLYLINE, false );
+ Polyline_9->AddPoint( 0, gp_XY( -103.92, 288.40 ) );
+ Polyline_9->AddPoint( 0, gp_XY( -53.41, 246.43 ) );
+ Polyline_9->AddPoint( 0, gp_XY( 10.62, 245.01 ) );
+ Polyline_9->Update();
+
+
+ Handle(HYDROData_LandCoverMap) LCM = Handle(HYDROData_LandCoverMap)::DownCast( aDoc->CreateObject( KIND_LAND_COVER_MAP ) );
+ CPPUNIT_ASSERT_EQUAL( true, LCM->Add( Polyline_1, "" ) );
+ CPPUNIT_ASSERT_EQUAL( true, LCM->Add( Polyline_6, "" ) );
+ CPPUNIT_ASSERT_EQUAL( true, LCM->Add( Polyline_7, "" ) );
+
+ CPPUNIT_ASSERT_EQUAL( true, LCM->Split( Polyline_9 ) );
+
+ TestViewer::show( LCM->GetShape(), AIS_Shaded, true, "LCM_split_2a" );
+ CPPUNIT_ASSERT_IMAGES
+
+ CPPUNIT_ASSERT_EQUAL( true, LCM->Split( Polyline_8 ) );
+
+ TestViewer::show( LCM->GetShape(), AIS_Shaded, true, "LCM_split_2b" );
+ CPPUNIT_ASSERT_IMAGES
+
+ aDoc->Close();
+}