X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDRO_tests%2FTestViewer.cxx;h=196df1f00f03fccce966f71e650f982229db214b;hb=d5fa2ac7c86e548f6ff5a98cb551a5f976d3a15d;hp=3fd331eb3acf1248a279171595fe1a8c6bd4aa2c;hpb=670039d7a5d25b1da51956b668f212756d31a86e;p=modules%2Fhydro.git diff --git a/src/HYDRO_tests/TestViewer.cxx b/src/HYDRO_tests/TestViewer.cxx index 3fd331eb..196df1f0 100644 --- a/src/HYDRO_tests/TestViewer.cxx +++ b/src/HYDRO_tests/TestViewer.cxx @@ -45,6 +45,10 @@ #include #include +#include +#include +#include + #ifdef WIN32 #pragma warning ( default: 4251 ) #endif @@ -84,9 +88,9 @@ OCCViewer_ViewWindow* TestViewer::viewWindow() return myViewWindow; } -Handle(AIS_InteractiveContext) context() +Handle(AIS_InteractiveContext) TestViewer::context() { - return TestViewer::viewer()->getAISContext(); + return viewer()->getAISContext(); } QColor TestViewer::GetColor(int i) @@ -114,6 +118,12 @@ QColor TestViewer::GetColor(int i) } } +void TestViewer::eraseAll( bool isUpdate ) +{ + context()->CloseLocalContext( -1, Standard_False ); + context()->EraseAll( isUpdate ); +} + void TestViewer::show( const Handle(AIS_InteractiveObject)& theObject, int theMode, int theSelectionMode, bool isFitAll, const char* theKey ) { @@ -121,8 +131,7 @@ void TestViewer::show( const Handle(AIS_InteractiveObject)& theObject, if( !aNewKey.isEmpty() ) { myKey = aNewKey; - context()->CloseLocalContext(); - context()->EraseAll( Standard_False ); + eraseAll( false ); } context()->Display( theObject, theMode, theSelectionMode ); @@ -160,23 +169,43 @@ void TestViewer::show( const TopoDS_Shape& theShape, int theMode, bool isFitAll, QString aNewKey = theKey; if( !aNewKey.isEmpty() ) { - context()->CloseLocalContext(); - context()->EraseAll( Standard_False ); + eraseAll( false ); myKey = aNewKey; } if( theShape.IsNull() ) return; - if( theShape.ShapeType()==TopAbs_COMPOUND ) - { - TopExp_Explorer anExplorer( theShape, TopAbs_FACE ); - for( ; anExplorer.More(); anExplorer.Next() ) - ShowShape (anExplorer.Current(), theMode); - } - else - ShowShape(theShape, theMode); - + int i = 0; + //show all faces first + TopTools_ListOfShape aListOfFaces; + TopExp_Explorer aFE( theShape, TopAbs_FACE ); + for( ; aFE.More(); aFE.Next() ) + aListOfFaces.Append(aFE.Current()); + GEOMUtils::SortShapes(aListOfFaces); + TopTools_ListIteratorOfListOfShape aLF(aListOfFaces); + for( ; aLF.More(); aLF.Next(), i++) + show( aLF.Value(), theMode, false, GetColor(i) ); + + //show all independent wires + TopTools_ListOfShape aListOfWires; + TopExp_Explorer aWE( theShape, TopAbs_WIRE, TopAbs_FACE ); + for( ; aWE.More(); aWE.Next() ) + aListOfWires.Append(aWE.Current()); + GEOMUtils::SortShapes(aListOfWires); + TopTools_ListIteratorOfListOfShape aLW(aListOfWires); + for( ; aLW.More(); aLW.Next(), i++) + show( aLW.Value(), theMode, false, GetColor(i) ); + + //show all independent edges + TopTools_ListOfShape aListOfEdges; + TopExp_Explorer anEE( theShape, TopAbs_EDGE, TopAbs_WIRE ); + for( ; anEE.More(); anEE.Next()) + aListOfEdges.Append(anEE.Current()); + GEOMUtils::SortShapes(aListOfEdges); + TopTools_ListIteratorOfListOfShape aLE(aListOfEdges); + for( ; aLE.More(); aLE.Next(), i++) + show( aLE.Value(), theMode, false, GetColor(i) ); if( isFitAll ) { @@ -185,21 +214,26 @@ void TestViewer::show( const TopoDS_Shape& theShape, int theMode, bool isFitAll, } } -void TestViewer::ShowShape(const TopoDS_Shape& theShape, int theMode) +/*void TestViewer::ShowShape(const TopoDS_Shape& theShape, int theMode, int& i) { - int i = 0; if( theShape.ShapeType()==TopAbs_SHELL ) { TopoDS_Iterator anIt( theShape ); - for( ; anIt.More(); anIt.Next(), i++ ) + for( ; anIt.More(); anIt.Next()) + { show( anIt.Value(), theMode, false, GetColor(i) ); + i++; + } } else if (theShape.ShapeType()==TopAbs_FACE || theShape.ShapeType()==TopAbs_WIRE || theShape.ShapeType()==TopAbs_EDGE || theShape.ShapeType()==TopAbs_VERTEX ) - show( theShape, theMode, false, GetColor(0) ); -} + { + show( theShape, theMode, false, GetColor(i) ); + i++; + } +}*/ bool AreImagesEqual( const QImage& theImage1, const QImage& theImage2, double theTolerance ) { @@ -227,7 +261,7 @@ bool TestViewer::AssertImages( QString& theMessage ) { QImage anActualImage = viewWindow()->dumpView(); - QString anExpectedRefFilePath = qgetenv( "HYDRO_REFERENCE_DATA" ); + QString anExpectedRefFilePath = qgetenv( "HYDRO_ROOT_DIR" ) + "/bin/salome/test/HYDRO"; anExpectedRefFilePath += "/" + myKey + ".png"; QImage anExpectedRefImage; anExpectedRefImage.load( anExpectedRefFilePath ); @@ -255,15 +289,24 @@ bool TestViewer::AssertImages( QString& theMessage ) return false; } -Handle_Aspect_ColorScale TestViewer::showColorScale( bool isShow ) +Handle_Aspect_ColorScale TestViewer::colorScale() { Handle(V3d_View) aView = myViewWindow->getViewPort()->getView(); if( aView.IsNull() ) return Handle(Aspect_ColorScale)(); + else + return aView->ColorScale(); +} - Handle(Aspect_ColorScale) aColorScale = aView->ColorScale(); +void TestViewer::showColorScale( bool isShow ) +{ + Handle(V3d_View) aView = myViewWindow->getViewPort()->getView(); + if( aView.IsNull() ) + return; + + Handle(Aspect_ColorScale) aColorScale = colorScale(); if( aColorScale.IsNull() ) - return aColorScale; + return; Standard_Real anXPos = 0.05; Standard_Real anYPos = 0.1; @@ -292,7 +335,6 @@ Handle_Aspect_ColorScale TestViewer::showColorScale( bool isShow ) if( aView->ColorScaleIsDisplayed() ) aView->ColorScaleErase(); } - return aColorScale; } void TestViewer::select( int theViewX, int theViewY ) @@ -302,9 +344,24 @@ void TestViewer::select( int theViewX, int theViewY ) context()->Select(); } -bool TestViewer::areScriptsEqual( const QString& theBaseName ) +QString GetLine( QFile& theFile, bool isUtf8 ) { - QString anExpectedRefFilePath = qgetenv( "HYDRO_REFERENCE_DATA" ); + QByteArray aLineData = theFile.readLine(); + QString aLine; + if( isUtf8 ) + aLine = QString::fromUtf8( aLineData ); + else + aLine = aLineData; + return aLine; +} + +bool TestViewer::areScriptsEqual( const QString& theBaseName, + bool isExpectedUtf8, + bool isActualUtf8, + int theLinesToOmit, + QString& theMsg ) +{ + QString anExpectedRefFilePath = qgetenv( "HYDRO_ROOT_DIR" ) + "/bin/salome/test/HYDRO"; anExpectedRefFilePath += "/" + theBaseName; QString anActualFilePath = QDir::tempPath() + "/" + theBaseName; @@ -315,18 +372,21 @@ bool TestViewer::areScriptsEqual( const QString& theBaseName ) !anActual.open ( QFile::ReadOnly | QFile::Text ) ) return false; - const int aLinesToOmit = 20; - for( int i=0; i