From c97445698e2e2de4b03e82e844f2490b8ecbe211 Mon Sep 17 00:00:00 2001 From: asl Date: Tue, 20 Oct 2015 12:25:18 +0300 Subject: [PATCH] refs #662: the tests for land cover presentations --- src/HYDROGUI/HYDROGUI_LandCoverMapPrs.cxx | 138 ++++++------------ src/HYDROGUI/HYDROGUI_LandCoverMapPrs.h | 12 +- src/HYDRO_tests/Basics_OCCTVersion.hxx | 51 +++++++ src/HYDRO_tests/CMakeLists.txt | 2 +- src/HYDRO_tests/TestViewer.cxx | 39 ++++- src/HYDRO_tests/TestViewer.h | 5 +- .../LandCoverMap_PrsByCoeff.png | Bin 0 -> 22592 bytes .../LandCoverMap_PrsByTypes.png | Bin 0 -> 9546 bytes .../test_HYDROData_LandCoverMap.cxx | 39 ++++- src/HYDRO_tests/test_HYDROData_LandCoverMap.h | 6 +- 10 files changed, 186 insertions(+), 106 deletions(-) create mode 100644 src/HYDRO_tests/Basics_OCCTVersion.hxx create mode 100644 src/HYDRO_tests/reference_data/LandCoverMap_PrsByCoeff.png create mode 100644 src/HYDRO_tests/reference_data/LandCoverMap_PrsByTypes.png diff --git a/src/HYDROGUI/HYDROGUI_LandCoverMapPrs.cxx b/src/HYDROGUI/HYDROGUI_LandCoverMapPrs.cxx index a71d556c..7a005c24 100644 --- a/src/HYDROGUI/HYDROGUI_LandCoverMapPrs.cxx +++ b/src/HYDROGUI/HYDROGUI_LandCoverMapPrs.cxx @@ -20,22 +20,17 @@ #include #include #include -#include -#include -#include -#include -#include -#include -#include +#include +#include #include #include #include -IMPLEMENT_STANDARD_HANDLE( HYDROGUI_LandCoverMapPrs, AIS_InteractiveObject ) -IMPLEMENT_STANDARD_RTTIEXT( HYDROGUI_LandCoverMapPrs, AIS_InteractiveObject ) +IMPLEMENT_STANDARD_HANDLE( HYDROGUI_LandCoverMapPrs, AIS_ColoredShape ) +IMPLEMENT_STANDARD_RTTIEXT( HYDROGUI_LandCoverMapPrs, AIS_ColoredShape ) HYDROGUI_LandCoverMapPrs::HYDROGUI_LandCoverMapPrs( const Handle(HYDROData_LandCoverMap)& theMap ) - : AIS_InteractiveObject() + : AIS_ColoredShape( theMap->GetShape() ) { SetLandCoverMap( theMap ); } @@ -52,6 +47,22 @@ Handle(HYDROData_LandCoverMap) HYDROGUI_LandCoverMapPrs::GetLandCoverMap() const void HYDROGUI_LandCoverMapPrs::SetLandCoverMap( const Handle(HYDROData_LandCoverMap)& theMap ) { myLCMap = theMap; + UpdateColors(); +} + +void HYDROGUI_LandCoverMapPrs::UpdateColors() +{ + Set( myLCMap->GetShape() ); + SetMaterial( Graphic3d_NOM_PLASTIC ); + HYDROData_LandCoverMap::Iterator anIt( myLCMap ); + for( ; anIt.More(); anIt.Next() ) + { + TopoDS_Face aFace = anIt.Face(); + QString aStricklerType = anIt.StricklerType(); + Quantity_Color aColor = GetColor( aStricklerType ); + SetCustomColor( aFace, aColor ); + SetCustomWidth( aFace, 1.0 ); + } } Handle(Aspect_ColorScale) HYDROGUI_LandCoverMapPrs::GetColorScale() const @@ -62,6 +73,16 @@ Handle(Aspect_ColorScale) HYDROGUI_LandCoverMapPrs::GetColorScale() const void HYDROGUI_LandCoverMapPrs::SetColorScale( const Handle(Aspect_ColorScale)& theColorScale ) { myColorScale = theColorScale; + double aMin = 0, aMax = 0; + if( myTable.IsNull() ) + { + //TODO: go through all Strickler tables in the document to get the global range + } + else + myTable->GetCoefficientRange( aMin, aMax ); + + myColorScale->SetRange( aMin, aMax ); + UpdateColors(); } Handle(HYDROData_StricklerTable) HYDROGUI_LandCoverMapPrs::GetTable() const @@ -100,7 +121,7 @@ Quantity_Color HYDROGUI_LandCoverMapPrs::GetColor( const QString& theStricklerTy Handle(HYDROData_StricklerTable) aTable = Handle(HYDROData_StricklerTable)::DownCast( anIt.Current() ); if( aTable->HasType( theStricklerType ) ) { - QColor aColor = myTable->GetColor( theStricklerType ); + QColor aColor = aTable->GetColor( theStricklerType ); return HYDROData_Tool::toOccColor( aColor ); } } @@ -108,98 +129,29 @@ Quantity_Color HYDROGUI_LandCoverMapPrs::GetColor( const QString& theStricklerTy return Quantity_Color(); } -void DrawTriangulation( const Handle(Prs3d_Presentation)& thePresentation, - const Handle(Poly_Triangulation)& theTriangulation, - const Quantity_Color& theColor ) -{ - const TColgp_Array1OfPnt& aNodesArray = theTriangulation->Nodes(); - int aNbNodes = aNodesArray.Length(); - - const Poly_Array1OfTriangle& aTrianglesArray = theTriangulation->Triangles(); - int aNbTriangles = aTrianglesArray.Length(); - - Handle( Graphic3d_ArrayOfTriangles ) anArray = new Graphic3d_ArrayOfTriangles - ( aNbNodes, aNbTriangles * 3, Standard_True, Standard_True, Standard_False ); - - Prs3d_Root::NewGroup( thePresentation ); - Handle( Graphic3d_Group ) aGroup = Prs3d_Root::CurrentGroup( thePresentation ); - Handle( Graphic3d_AspectFillArea3d ) anAspect = new Graphic3d_AspectFillArea3d(); - Graphic3d_MaterialAspect aMaterialAspect( Graphic3d_NOM_PLASTIC ); - aMaterialAspect.SetColor( theColor ); - anAspect->SetFrontMaterial( aMaterialAspect ); - anAspect->SetBackMaterial( aMaterialAspect ); - - Standard_Integer i; - - for( i = aNodesArray.Lower(); i <= aNodesArray.Upper(); i++ ) - { - anArray->AddVertex( aNodesArray( i ), theColor ); - anArray->SetVertexNormal( i, 0, 0, 1 ); - } - - Standard_Integer anIndexTriangle[3] = { 0, 0, 0 }; - for( i = aTrianglesArray.Lower(); i<= aTrianglesArray.Upper(); i++ ) - { - aTrianglesArray( i ).Get( anIndexTriangle[0], anIndexTriangle[1], anIndexTriangle[2] ); - anArray->AddEdge( anIndexTriangle[0] ); - anArray->AddEdge( anIndexTriangle[1] ); - anArray->AddEdge( anIndexTriangle[2] ); - } - aGroup->AddPrimitiveArray( anArray ); - //aGroup->SetGroupPrimitivesAspect( anAspect ); -} - void HYDROGUI_LandCoverMapPrs::Compute( const Handle(PrsMgr_PresentationManager3d)& thePresentationManager, const Handle(Prs3d_Presentation)& thePresentation, const Standard_Integer theMode ) { - if( myLCMap.IsNull() ) - return; - thePresentation->Clear(); - const double aLinearDeflection = 1E-2; - BRepMesh_IncrementalMesh aMesh( myLCMap->GetShape(), aLinearDeflection ); - aMesh.Perform(); - bool isOK = aMesh.IsDone(); + + Quantity_Color anEdgeColor = Quantity_NOC_WHITE; + + myDrawer->UIsoAspect()->SetNumber( 0 ); + myDrawer->VIsoAspect()->SetNumber( 0 ); + myDrawer->LineAspect()->SetColor( anEdgeColor ); + myDrawer->FaceBoundaryAspect()->SetColor( anEdgeColor ); + myDrawer->FreeBoundaryAspect()->SetColor( anEdgeColor ); switch( theMode ) { + case AIS_WireFrame: case AIS_Shaded: - { - HYDROData_LandCoverMap::Iterator anIt( myLCMap ); - for( ; anIt.More(); anIt.Next() ) - { - TopoDS_Face aFace = anIt.Face(); - QString aStricklerType = anIt.StricklerType(); - Quantity_Color aColor = GetColor( aStricklerType ); - - TopLoc_Location aLocation; - Handle(Poly_Triangulation) aTriangulation = BRep_Tool::Triangulation( aFace, aLocation ); - DrawTriangulation( thePresentation, aTriangulation, aColor ); - } - } - break; - default: + AIS_ColoredShape::Compute( thePresentationManager, thePresentation, theMode ); break; } -} - -void HYDROGUI_LandCoverMapPrs::ComputeSelection( const Handle(SelectMgr_Selection)& theSelection, - const Standard_Integer theMode ) -{ - if( myLCMap.IsNull() ) - return; - if( theMode==0 ) - { - /*theSelection->Clear(); - Bnd_Box B = BoundingBox(); - Handle(StdSelect_BRepOwner) anOwner = new StdSelect_BRepOwner( myLCMap->GetShape(), this ); - Handle(Select3D_SensitiveBox) aSensitiveBox = new Select3D_SensitiveBox( anOwner, B ); - theSelection->Add( aSensitiveBox );*/ - } - else - { - //TODO - } + if( theMode==AIS_Shaded ) + StdPrs_WFDeflectionShape::Add( thePresentation, Shape(), myDrawer ); } + diff --git a/src/HYDROGUI/HYDROGUI_LandCoverMapPrs.h b/src/HYDROGUI/HYDROGUI_LandCoverMapPrs.h index 7a930bc0..0e9888a1 100644 --- a/src/HYDROGUI/HYDROGUI_LandCoverMapPrs.h +++ b/src/HYDROGUI/HYDROGUI_LandCoverMapPrs.h @@ -21,12 +21,12 @@ #include #include -#include +#include #include -DEFINE_STANDARD_HANDLE( HYDROGUI_LandCoverMapPrs, AIS_InteractiveObject ) +DEFINE_STANDARD_HANDLE( HYDROGUI_LandCoverMapPrs, AIS_ColoredShape ) -class HYDROGUI_LandCoverMapPrs : public AIS_InteractiveObject +class HYDROGUI_LandCoverMapPrs : public AIS_ColoredShape { public: DEFINE_STANDARD_RTTI( HYDROGUI_LandCoverMapPrs ); @@ -47,11 +47,11 @@ public: const Handle(Prs3d_Presentation)& thePresentation, const Standard_Integer theMode ); - virtual void ComputeSelection( const Handle(SelectMgr_Selection)& theSelection, - const Standard_Integer theMode ); - Quantity_Color GetColor( const QString& theStricklerType ) const; +protected: + void UpdateColors(); + private: Handle(HYDROData_LandCoverMap) myLCMap; Handle(Aspect_ColorScale) myColorScale; diff --git a/src/HYDRO_tests/Basics_OCCTVersion.hxx b/src/HYDRO_tests/Basics_OCCTVersion.hxx new file mode 100644 index 00000000..2f9b4942 --- /dev/null +++ b/src/HYDRO_tests/Basics_OCCTVersion.hxx @@ -0,0 +1,51 @@ +// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// File : Basics_OCCTVersion.hxx +// Author : Julia DOROVSKIKH, Open CASCADE S.A.S (julia.dorovskikh@opencascade.com) + +#ifndef BASICS_OCCTVERSION_HXX +#define BASICS_OCCTVERSION_HXX + +#include + +// +// NOTE: Since version 6.7.0 OCC_VERSION_DEVELOPMENT macro in the Standard_Version.hxx +// points to the development status of the OCCT version: for example "dev", "alpha", +// "beta", "rc1", etc. +// OCC_VERSION_MAJOR, OCC_VERSION_MINOR and OCC_VERSION_MAINTENANCE macros +// specify actual (final) version number; for development version it is a future +// target version number (i.e. version number is incremented immediately after +// releasing of the stable version). +// + +#ifdef OCC_VERSION_SERVICEPACK +# define OCC_VERSION_LARGE (OCC_VERSION_MAJOR << 24 | OCC_VERSION_MINOR << 16 | OCC_VERSION_MAINTENANCE << 8 | OCC_VERSION_SERVICEPACK) +#else +# ifdef OCC_VERSION_DEVELOPMENT +# define OCC_VERSION_LARGE ((OCC_VERSION_MAJOR << 24 | OCC_VERSION_MINOR << 16 | OCC_VERSION_MAINTENANCE << 8)-1) +# else +# define OCC_VERSION_LARGE (OCC_VERSION_MAJOR << 24 | OCC_VERSION_MINOR << 16 | OCC_VERSION_MAINTENANCE << 8) +# endif +#endif + +#endif // BASICS_OCCTVERSION_HXX diff --git a/src/HYDRO_tests/CMakeLists.txt b/src/HYDRO_tests/CMakeLists.txt index 45e7f12b..a12b8191 100644 --- a/src/HYDRO_tests/CMakeLists.txt +++ b/src/HYDRO_tests/CMakeLists.txt @@ -61,7 +61,7 @@ IF( ${WIN32} ) ELSE() link_directories( $ENV{CAS_ROOT_DIR}/lib ) ENDIF() -SET( CAS_LIBRARIES TKernel TKLCAF TKCAF TKCDF TKMath TKG2d TKG3d TKBRep TKGeomBase TKTopAlgo TKGeomAlgo TKBool TKShHealing TKXSBase TKOffset TKHLR TKBO TKV3d TKService ) +SET( CAS_LIBRARIES TKernel TKLCAF TKCAF TKCDF TKMath TKG2d TKG3d TKBRep TKGeomBase TKTopAlgo TKGeomAlgo TKBool TKShHealing TKXSBase TKOffset TKHLR TKBO TKV3d TKService TKMesh ) link_directories( $ENV{QT4_ROOT_DIR}/lib ) IF( ${WIN32} ) diff --git a/src/HYDRO_tests/TestViewer.cxx b/src/HYDRO_tests/TestViewer.cxx index 02516f51..6cf7242f 100644 --- a/src/HYDRO_tests/TestViewer.cxx +++ b/src/HYDRO_tests/TestViewer.cxx @@ -3,6 +3,7 @@ #include #include #include +#include #ifdef WIN32 #pragma warning ( disable: 4251 ) #endif @@ -16,6 +17,7 @@ #endif #include #include +#include #include #include @@ -76,11 +78,13 @@ QColor randomColor() } void TestViewer::show( const Handle(AIS_InteractiveObject)& theObject, - int theMode, int theSelectionMode, bool isFitAll ) + int theMode, int theSelectionMode, bool isFitAll, const char* theKey ) { context()->EraseAll( Standard_False ); context()->Display( theObject, theMode, theSelectionMode ); + myKey = theKey; + if( isFitAll ) { viewWindow()->onTopView(); @@ -177,3 +181,36 @@ bool TestViewer::AssertImages( QString& theMessage ) return false; } + +Handle_Aspect_ColorScale TestViewer::showColorScale() +{ + Handle(V3d_View) aView = myViewWindow->getViewPort()->getView(); + if( aView.IsNull() ) + return Handle(Aspect_ColorScale)(); + + Handle(Aspect_ColorScale) aColorScale = aView->ColorScale(); + if( aColorScale.IsNull() ) + return aColorScale; + + Standard_Real anXPos = 0.05; //TODO + Standard_Real anYPos = 0.1; //TODO + Standard_Real aWidth = 0.2; //TODO + Standard_Real aHeight = 0.5; //TODO + Standard_Integer aTextHeight = 14; //TODO + Standard_Integer aNbIntervals = 30; //TODO + + aColorScale->SetXPosition( anXPos ); + aColorScale->SetYPosition( anYPos ); + aColorScale->SetWidth( aWidth ); + aColorScale->SetHeight( aHeight ); + aColorScale->SetTextHeight( aTextHeight ); + aColorScale->SetNumberOfIntervals( aNbIntervals ); + + aColorScale->SetTitle( "test" ); + aColorScale->SetRange( 0, 1 ); + + if( !aView->ColorScaleIsDisplayed() ) + aView->ColorScaleDisplay(); + + return aColorScale; +} diff --git a/src/HYDRO_tests/TestViewer.h b/src/HYDRO_tests/TestViewer.h index a27a8c7d..73e50b59 100644 --- a/src/HYDRO_tests/TestViewer.h +++ b/src/HYDRO_tests/TestViewer.h @@ -8,6 +8,7 @@ class TopoDS_Shape; class QString; class QColor; class Handle_AIS_InteractiveObject; +class Handle_Aspect_ColorScale; class TestViewer { @@ -17,11 +18,13 @@ public: static OCCViewer_ViewWindow* viewWindow(); static void show( const Handle_AIS_InteractiveObject& theObject, - int theMode, int theSelelctionMode, bool isFitAll ); + int theMode, int theSelelctionMode, bool isFitAll, const char* theKey ); static void show( const TopoDS_Shape& theShape, int theMode, bool isFitAll, const QColor& theColor ); static void show( const TopoDS_Shape& theShape, int theMode, bool isFitAll, const char* theKey ); static bool AssertImages( QString& theMessage ); + static Handle_Aspect_ColorScale showColorScale(); + private: static OCCViewer_ViewManager* myViewManager; static OCCViewer_ViewWindow* myViewWindow; diff --git a/src/HYDRO_tests/reference_data/LandCoverMap_PrsByCoeff.png b/src/HYDRO_tests/reference_data/LandCoverMap_PrsByCoeff.png new file mode 100644 index 0000000000000000000000000000000000000000..e49f0768e17adaac0af880e54ed0c9ee096cb832 GIT binary patch literal 22592 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 literal 0 HcmV?d00001 diff --git a/src/HYDRO_tests/reference_data/LandCoverMap_PrsByTypes.png b/src/HYDRO_tests/reference_data/LandCoverMap_PrsByTypes.png new file mode 100644 index 0000000000000000000000000000000000000000..18d7f51a9fa4c8e93c834d43a595b728638cd779 GIT binary patch literal 9546 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 #include #include +#include #include #include @@ -449,7 +450,7 @@ void test_HYDROData_LandCoverMap::test_merge_faces_circles() } } -void test_HYDROData_LandCoverMap::test_land_cover_prs() +void test_HYDROData_LandCoverMap::test_land_cover_prs_by_types() { Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(1); @@ -475,7 +476,41 @@ void test_HYDROData_LandCoverMap::test_land_cover_prs() Handle(HYDROGUI_LandCoverMapPrs) aPrs = new HYDROGUI_LandCoverMapPrs( aMap ); aPrs->SetTable( aTable ); - TestViewer::show( aPrs, AIS_Shaded, 1, true ); + TestViewer::show( aPrs, AIS_Shaded, 1, true, "LandCoverMap_PrsByTypes" ); + CPPUNIT_ASSERT_IMAGES + + aDoc->Close(); +} + +void test_HYDROData_LandCoverMap::test_land_cover_prs_by_coeff() +{ + Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(1); + + Handle(HYDROData_StricklerTable) aTable = + Handle(HYDROData_StricklerTable)::DownCast( aDoc->CreateObject( KIND_STRICKLER_TABLE ) ); + CPPUNIT_ASSERT_EQUAL( true, aTable->Import( DEF_STR_PATH ) ); + + Handle(HYDROData_LandCoverMap) aMap = + Handle(HYDROData_LandCoverMap)::DownCast( aDoc->CreateObject( KIND_LAND_COVER_MAP ) ); + + TopoDS_Face aLC1 = LandCover( QList() << 12 << 19 << 82 << 9 << 126 << 53 << 107 << 80 << 29 << 75 ); + CPPUNIT_ASSERT_EQUAL( true, aMap->LocalPartition( aLC1, "Zones de champs cultivé à végétation basse" ) ); + + TopoDS_Face aLC2 = LandCover( QList() << 21 << 34 << 24 << 25 << 37 << 37 << 40 << 61 << + 44 << 95 << 85 << 100 << 104 << 66 << 107 << 33 << + 128 << 18 << 140 << 50 << 131 << 89 << 104 << 111 << + 31 << 114 ); + CPPUNIT_ASSERT_EQUAL( true, aMap->LocalPartition( aLC2, "Zones de champs cultivé à végétation haute" ) ); + + TopoDS_Face aLC3 = LandCover( QList() << 4 << 54 << 1 << 47 << 51 << 45 << + 127 << 42 << 145 << 43 << 148 << 60 << 90 << 65 ); + CPPUNIT_ASSERT_EQUAL( true, aMap->LocalPartition( aLC3, "Zones de champs, prairies, sans cultures" ) ); + + Handle(HYDROGUI_LandCoverMapPrs) aPrs = new HYDROGUI_LandCoverMapPrs( aMap ); + aPrs->SetTable( aTable ); + aPrs->SetColorScale( TestViewer::showColorScale() ); + TestViewer::show( aPrs, AIS_Shaded, 1, true, "LandCoverMap_PrsByCoeff" ); + CPPUNIT_ASSERT_IMAGES aDoc->Close(); } diff --git a/src/HYDRO_tests/test_HYDROData_LandCoverMap.h b/src/HYDRO_tests/test_HYDROData_LandCoverMap.h index bf28ae68..cbe08770 100644 --- a/src/HYDRO_tests/test_HYDROData_LandCoverMap.h +++ b/src/HYDRO_tests/test_HYDROData_LandCoverMap.h @@ -32,7 +32,8 @@ class test_HYDROData_LandCoverMap : public CppUnit::TestFixture CPPUNIT_TEST( test_remove ); CPPUNIT_TEST( test_merge_faces_boxes ); CPPUNIT_TEST( test_merge_faces_circles ); - CPPUNIT_TEST( test_land_cover_prs ); + CPPUNIT_TEST( test_land_cover_prs_by_types ); + CPPUNIT_TEST( test_land_cover_prs_by_coeff ); CPPUNIT_TEST_SUITE_END(); public: @@ -43,7 +44,8 @@ public: void test_remove(); void test_merge_faces_boxes(); void test_merge_faces_circles(); - void test_land_cover_prs(); + void test_land_cover_prs_by_types(); + void test_land_cover_prs_by_coeff(); }; CPPUNIT_TEST_SUITE_REGISTRATION( test_HYDROData_LandCoverMap ); -- 2.39.2