+void TestViewer::show( const TopoDS_Shape& theShape, int theMode, bool isFitAll, const QColor& theColor,
+ int theUIANb, int theVIANb)
+{
+ Handle(AIS_Shape) aShape = new AIS_Shape( theShape );
+ cout <<theShape;
+ if( theShape.ShapeType()==TopAbs_VERTEX )
+ aShape->Attributes()->PointAspect()->SetTypeOfMarker( Aspect_TOM_X );
+ if (theShape.ShapeType()==TopAbs_FACE)
+ {
+ context()->DefaultDrawer()->UIsoAspect()->SetNumber(theUIANb);
+ context()->DefaultDrawer()->VIsoAspect()->SetNumber(theVIANb);
+ Handle_Prs3d_Drawer aDrawer = aShape->Attributes();
+ aDrawer->UIsoAspect()->SetNumber(theUIANb);
+ aDrawer->VIsoAspect()->SetNumber(theVIANb);
+ }
+ aShape->SetMaterial( Graphic3d_NOM_PLASTIC );
+ aShape->SetColor( HYDROData_Tool::toOccColor( theColor ) );
+ context()->Display( aShape, theMode, 0, Standard_False );
+
+ if( isFitAll )
+ fitAll();
+}
+
+void TestViewer::show( const TopoDS_Shape& theShape, int theMode, bool isFitAll, const char* theKey,
+ int theUIANb, int theVIANb)
+{
+ QString aNewKey = theKey;
+ if( !aNewKey.isEmpty() )
+ {
+ eraseAll( false );
+ myKey = aNewKey;
+ }
+
+ if( theShape.IsNull() )
+ return;
+
+ 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), theUIANb, theVIANb );
+
+ //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 )
+ fitAll();
+}
+
+/*void TestViewer::ShowShape(const TopoDS_Shape& theShape, int theMode, int& i)
+{
+ if( theShape.ShapeType()==TopAbs_SHELL )
+ {
+ TopoDS_Iterator anIt( theShape );
+ 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(i) );
+ i++;
+ }
+}*/
+
+bool AreImagesEqual( const QImage& theImage1, const QImage& theImage2, double theTolerance )