Salome HOME
[Bug PAL7444] display mesh takes a lot of more memory in 2.1.0 than in 2.0.0.
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_GEOMGenUtils.cxx
1 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
2 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
3 // 
4 //  This library is free software; you can redistribute it and/or 
5 //  modify it under the terms of the GNU Lesser General Public 
6 //  License as published by the Free Software Foundation; either 
7 //  version 2.1 of the License. 
8 // 
9 //  This library is distributed in the hope that it will be useful, 
10 //  but WITHOUT ANY WARRANTY; without even the implied warranty of 
11 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
12 //  Lesser General Public License for more details. 
13 // 
14 //  You should have received a copy of the GNU Lesser General Public 
15 //  License along with this library; if not, write to the Free Software 
16 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
17 // 
18 //  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
19
20
21 #include "QAD_Desktop.h"
22
23 #include "SMESHGUI_GEOMGenUtils.h"
24 #include "SMESHGUI_Utils.h"
25 #include CORBA_CLIENT_HEADER(SMESH_Mesh)
26
27 namespace SMESH{
28
29   GEOM::GEOM_Gen_var GetGEOMGen()
30   {
31     static GEOM::GEOM_Gen_var aGEOMGen;
32     if(CORBA::is_nil(aGEOMGen)){
33       if(QAD_Desktop* aDesktop = QAD_Application::getDesktop()){
34         Engines::Component_var aComponent = aDesktop->getEngine("FactoryServer","GEOM");
35         aGEOMGen = GEOM::GEOM_Gen::_narrow(aComponent);
36       }
37     }
38     return aGEOMGen;
39   }
40
41
42   GEOM::GEOM_Object_var GetShapeOnMeshOrSubMesh(SALOMEDS::SObject_ptr theMeshOrSubmesh)
43   {
44     if(!theMeshOrSubmesh->_is_nil()) {
45       CORBA::Object_var Obj = theMeshOrSubmesh->GetObject();
46       if ( !CORBA::is_nil( Obj ) ) {
47         SMESH::SMESH_Mesh_var aMesh =
48           SObjectToInterface<SMESH::SMESH_Mesh>( theMeshOrSubmesh );
49         if ( !aMesh->_is_nil() )
50           return aMesh->GetShapeToMesh();
51         SMESH::SMESH_subMesh_var aSubmesh =
52           SObjectToInterface<SMESH::SMESH_subMesh>( theMeshOrSubmesh );
53         if ( !aSubmesh->_is_nil() )
54           return aSubmesh->GetSubShape();
55       }
56     }
57     return GEOM::GEOM_Object::_nil();
58   }
59
60 }