From 359292c587d3a6c2a38debc097150b58e3ec2c01 Mon Sep 17 00:00:00 2001 From: apo Date: Wed, 17 Aug 2005 05:51:12 +0000 Subject: [PATCH] To provide a way to introduce a new type of 3D presentation without IDL modification --- src/VISU_I/VISU_Gen_i.hh | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/VISU_I/VISU_Gen_i.hh b/src/VISU_I/VISU_Gen_i.hh index a624db6f..abaac0a6 100644 --- a/src/VISU_I/VISU_Gen_i.hh +++ b/src/VISU_I/VISU_Gen_i.hh @@ -55,23 +55,35 @@ namespace VISU{ virtual Mesh_ptr GroupMesh(Result_ptr theResult, const char* theMeshName, const char* theGroupName); //Create 3D collored Presentation Of Different Types - template typename TPrs3d_i::TInterface::_var_type - Prs3dOnField(Result_ptr theResult, const char* theMeshName, VISU::Entity theEntity, - const char* theFieldName, CORBA::Double theIteration, bool theAddToStudy = true) + template TPrs3d_i* + CreatePrs3d(Result_ptr theResult, const char* theMeshName, VISU::Entity theEntity, + const char* theFieldName, CORBA::Double theIteration, bool theAddToStudy = true) { + TPrs3d_i* aPresent = NULL; + if(myStudyDocument->GetProperties()->IsLocked()) + return aPresent; + typedef typename TPrs3d_i::TInterface TPrs3d; typename TPrs3d::_var_type aPrs3d; - if(myStudyDocument->GetProperties()->IsLocked()) return TPrs3d::_nil(); Mutex mt(myMutex); if(Result_i* pResult = dynamic_cast(GetServant(theResult).in())){ if(TPrs3d_i::IsPossible(pResult,theMeshName,theEntity,theFieldName,int(theIteration))){ - TPrs3d_i* aPresent = new TPrs3d_i(pResult,theAddToStudy); - if(aPresent->Create(theMeshName,theEntity,theFieldName,int(theIteration)) != NULL) - return aPresent->_this(); - else + aPresent = new TPrs3d_i(pResult,theAddToStudy); + if(aPresent->Create(theMeshName,theEntity,theFieldName,int(theIteration)) == NULL) aPresent->_remove_ref(); } } + return aPresent; + } + + template typename TPrs3d_i::TInterface::_var_type + Prs3dOnField(Result_ptr theResult, const char* theMeshName, VISU::Entity theEntity, + const char* theFieldName, CORBA::Double theIteration, bool theAddToStudy = true) + { + typedef typename TPrs3d_i::TInterface TPrs3d; + typename TPrs3d::_var_type aPrs3d; + if(TPrs3d_i* aPrs3d = CreatePrs3d(theResult,theMeshName,theEntity,theFieldName,theIteration,theAddToStudy)) + return aPrs3d->_this(); return TPrs3d::_nil(); } -- 2.39.2