Salome HOME
4fc29d343263750c2d268e89d4594fd7ae39d505
[modules/hydro.git] / src / HYDRO_tests / TestViewer.cxx
1
2 #include <TestViewer.h>
3 #include <OCCViewer_ViewManager.h>
4 #include <OCCViewer_ViewModel.h>
5 #include <OCCViewer_ViewWindow.h>
6 #include <AIS_InteractiveContext.hxx>
7 #include <AIS_Shape.hxx>
8 #include <QDir>
9
10 OCCViewer_ViewManager* TestViewer::myViewManager = 0;
11 OCCViewer_ViewWindow* TestViewer::myViewWindow = 0;
12
13 OCCViewer_ViewManager* TestViewer::viewManager()
14 {
15   if( myViewManager )
16     return myViewManager;
17
18   myViewManager = new OCCViewer_ViewManager( 0, 0 );
19   OCCViewer_Viewer* aViewer = new OCCViewer_Viewer( true );
20
21   aViewer->setTrihedronSize( 100, true );
22   aViewer->setInteractionStyle( 0 );
23   aViewer->setZoomingStyle( 1 );
24
25   myViewManager->setViewModel( aViewer );
26   myViewWindow = dynamic_cast<OCCViewer_ViewWindow*>( myViewManager->createViewWindow() );
27
28   return myViewManager;
29 }
30
31 OCCViewer_Viewer* TestViewer::viewer()
32 {
33   return dynamic_cast<OCCViewer_Viewer*>( viewManager()->getViewModel() );
34 }
35
36 OCCViewer_ViewWindow* TestViewer::viewWindow()
37 {
38   viewManager(); //to create the view if it was not created earlier
39   return myViewWindow;
40 }
41
42 Handle(AIS_InteractiveContext) context()
43 {
44   return TestViewer::viewer()->getAISContext();
45 }
46
47 void TestViewer::show( const TopoDS_Shape& theShape, bool isFitAll )
48 {
49   context()->EraseAll();
50   Handle(AIS_Shape) aShape = new AIS_Shape( theShape );
51   context()->Display( aShape, AIS_Shaded, 0, Standard_False );
52
53   viewWindow()->onTopView();
54   viewWindow()->onFitAll();
55 }
56
57 void TestViewer::dump( const TopoDS_Shape& theShape, const QString& theName )
58 {
59   show( theShape );
60   QImage anImage = viewWindow()->dumpView();
61
62   QString aPath = QDir::tempPath() + "/" + theName + ".png";
63   anImage.save( aPath );
64 }