X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_Displayer.cxx;h=c28de63f9e4b7cf0926fc03c70b5148b00a24961;hb=de7cf9bb0a7a41d6487013c87f4a54d0664cd303;hp=a99292ae0a714423475286734f15a47418d14626;hpb=f8418d6cb7ab14ad2563bf2aa8fa70b4451c9173;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_Displayer.cxx b/src/HYDROGUI/HYDROGUI_Displayer.cxx index a99292ae..c28de63f 100644 --- a/src/HYDROGUI/HYDROGUI_Displayer.cxx +++ b/src/HYDROGUI/HYDROGUI_Displayer.cxx @@ -27,6 +27,7 @@ #include "HYDROGUI_Prs.h" #include "HYDROGUI_PrsImageDriver.h" #include "HYDROGUI_PrsPolylineDriver.h" +#include "HYDROGUI_PrsZoneDriver.h" #include "HYDROGUI_Tool.h" #include @@ -55,7 +56,7 @@ void HYDROGUI_Displayer::SetToUpdate( const HYDROData_SequenceOfObjects& theObjs GraphicsView_ObjectList anObjectList = aViewPort->getObjects(); for( int i = 1, n = theObjs.Length(); i <= n; i++ ) { - Handle(HYDROData_Object) anObj = theObjs.Value( i ); + Handle(HYDROData_Entity) anObj = theObjs.Value( i ); if( anObj.IsNull() ) continue; @@ -97,13 +98,9 @@ void HYDROGUI_Displayer::EraseAll( const int theViewerId ) void HYDROGUI_Displayer::DisplayAll( const int theViewerId, const bool theIsForced ) { - HYDROGUI_DataModel* aModel = (HYDROGUI_DataModel*)myModule->dataModel(); - if( aModel ) - { - HYDROData_SequenceOfObjects aSeq; - HYDROGUI_Tool::GetPrsSubObjects( aModel, theViewerId, aSeq ); - Update( aSeq, theViewerId, theIsForced ); - } + HYDROData_SequenceOfObjects aSeq; + HYDROGUI_Tool::GetPrsSubObjects( myModule, aSeq ); + Update( aSeq, theViewerId, theIsForced ); } void HYDROGUI_Displayer::Update( const HYDROData_SequenceOfObjects& theObjs, @@ -118,7 +115,7 @@ void HYDROGUI_Displayer::Update( const HYDROData_SequenceOfObjects& theObjs, for( int i = 1, n = theObjs.Length(); i <= n; i++ ) { - const Handle(HYDROData_Object)& anObj = theObjs.Value( i ); + const Handle(HYDROData_Entity)& anObj = theObjs.Value( i ); if( anObj.IsNull() ) anObjectsToErase.Append( anObj ); else @@ -149,7 +146,7 @@ void HYDROGUI_Displayer::Erase( const HYDROData_SequenceOfObjects& theObjs, for( int i = 1, n = theObjs.Length(); i <= n; i++ ) { // the object may be null or dead - const Handle(HYDROData_Object)& anObj = theObjs.Value( i ); + const Handle(HYDROData_Entity)& anObj = theObjs.Value( i ); if( HYDROGUI_Prs* aPrs = HYDROGUI_Tool::GetPresentation( anObj, anObjectList ) ) { aViewPort->removeItem( aPrs ); @@ -175,7 +172,7 @@ void HYDROGUI_Displayer::Display( const HYDROData_SequenceOfObjects& theObjs, GraphicsView_ObjectList anObjectList = aViewPort->getObjects(); for( int i = 1, n = theObjs.Length(); i <= n; i++ ) { - Handle(HYDROData_Object) anObj = theObjs.Value( i ); + Handle(HYDROData_Entity) anObj = theObjs.Value( i ); if( anObj.IsNull() ) continue; @@ -193,11 +190,12 @@ void HYDROGUI_Displayer::Display( const HYDROData_SequenceOfObjects& theObjs, if( aPrs ) { - bool anIsVisible = anObj->GetVisibility(); + bool anIsVisible = myModule->isObjectVisible( (size_t)aViewer, anObj ); aPrs->setVisible( anIsVisible ); } } + aViewPort->onBoundingRectChanged(); // specific of HYDRO module aViewPort->fitAll(); } @@ -216,7 +214,7 @@ void HYDROGUI_Displayer::purgeObjects( const int theViewerId ) { if( HYDROGUI_Prs* aPrs = dynamic_cast( anIter.next() ) ) { - Handle(HYDROData_Object) anObject = aPrs->getObject(); + Handle(HYDROData_Entity) anObject = aPrs->getObject(); if( !anObject.IsNull() && anObject->IsRemoved() ) { aViewPort->removeItem( aPrs ); @@ -226,7 +224,7 @@ void HYDROGUI_Displayer::purgeObjects( const int theViewerId ) } } -HYDROGUI_PrsDriver* HYDROGUI_Displayer::getDriver( const Handle(HYDROData_Object)& theObj ) +HYDROGUI_PrsDriver* HYDROGUI_Displayer::getDriver( const Handle(HYDROData_Entity)& theObj ) { HYDROGUI_PrsDriver* aDriver = NULL; ObjectKind aKind = theObj->GetKind(); @@ -239,15 +237,20 @@ HYDROGUI_PrsDriver* HYDROGUI_Displayer::getDriver( const Handle(HYDROData_Object { case KIND_IMAGE: aDriver = new HYDROGUI_PrsImageDriver(); - myPrsDriversMap[ aKind ] = aDriver; break; case KIND_POLYLINE: aDriver = new HYDROGUI_PrsPolylineDriver(); - myPrsDriversMap[ aKind ] = aDriver; + break; + case KIND_ZONE: + aDriver = new HYDROGUI_PrsZoneDriver(); break; default: break; } + + if ( aDriver ) + myPrsDriversMap[ aKind ] = aDriver; } + return aDriver; }