X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPrs%2FSALOME_Prs.cxx;h=88177c48ad8d5af143bdb1c913abf40b8ac7aea7;hb=bf4f33e12f47caaa39edde16c7308e24ae7b515e;hp=871a4ca84f012dea4c8f81efcf336bd7ec7ffa15;hpb=6878ef4d7381638ec39d1ca9d03afc21a69401aa;p=modules%2Fgui.git diff --git a/src/Prs/SALOME_Prs.cxx b/src/Prs/SALOME_Prs.cxx index 871a4ca84..88177c48a 100755 --- a/src/Prs/SALOME_Prs.cxx +++ b/src/Prs/SALOME_Prs.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -25,6 +25,30 @@ #include "SALOME_Prs.h" +/*! + Constructor +*/ +SALOME_Prs::SALOME_Prs(const char* e) : myIsClippable(true) +{ + myEntry = std::string( e ? e : "" ); +} + +/*! + Get entry +*/ +const char* SALOME_Prs::GetEntry() const +{ + return myEntry.c_str(); +} + +/*! + Dispatches operation of activation of sub-shapes selection +*/ +void SALOME_Prs::LocalSelectionIn( SALOME_View*, const std::list ) const +{ + // base implementation does nothing +} + /*! Dispatches display operation to proper Display() method of SALOME_View */ @@ -78,7 +102,17 @@ void SALOME_OCCPrs::AfterEraseIn( SALOME_Displayer* d, SALOME_View* v ) const */ void SALOME_OCCPrs::LocalSelectionIn( SALOME_View* v, const int mode ) const { - if ( v ) v->LocalSelection( this, mode ); + std::list modes; + modes.push_back( mode ); + LocalSelectionIn( v, modes ); +} + +/*! + Dispatches operation to proper LocalSelectionIn() method of SALOME_View +*/ +void SALOME_OCCPrs::LocalSelectionIn( SALOME_View* v, const std::list modes ) const +{ + if ( v && !modes.empty() ) v->LocalSelection( this, modes ); } /*! @@ -220,17 +254,19 @@ void SALOME_Prs2d::Update( SALOME_Displayer* d ) /*! Gives control to SALOME_Prs object, so that it could perform double dispatch */ -void SALOME_View::Display( const SALOME_Prs* prs ) +void SALOME_View::Display( SALOME_Displayer* d, const SALOME_Prs* prs ) { prs->DisplayIn( this ); + if ( d ) d->UpdateVisibility( this, prs, true ); } /*! Gives control to SALOME_Prs object, so that it could perform double dispatch */ -void SALOME_View::Erase( const SALOME_Prs* prs, const bool forced ) +void SALOME_View::Erase( SALOME_Displayer* d, const SALOME_Prs* prs, const bool forced ) { prs->EraseIn( this, forced ); + if ( d ) d->UpdateVisibility( this, prs, false ); } /*! @@ -238,7 +274,17 @@ void SALOME_View::Erase( const SALOME_Prs* prs, const bool forced ) */ void SALOME_View::LocalSelection( const SALOME_Prs* prs, const int mode ) { - prs->LocalSelectionIn( this, mode ); + std::list modes; + modes.push_back( mode ); + LocalSelection( prs, modes ); +} + +/*! + Gives control to SALOME_Prs object, so that it could perform double dispatch +*/ +void SALOME_View::LocalSelection( const SALOME_Prs* prs, const std::list modes ) +{ + prs->LocalSelectionIn( this, modes ); } /*! @@ -292,9 +338,10 @@ void SALOME_View::Erase( const SALOME_Prs2d*, const bool ) /*! Virtual method, should be reimplemented in successors, by default issues a warning and does nothing. */ -void SALOME_View::EraseAll( const bool ) +void SALOME_View::EraseAll( SALOME_Displayer* d, const bool ) { // MESSAGE( "SALOME_View::EraseAll() called!" ); + if ( d ) d->UpdateVisibility( this, 0, false ); } /*! @@ -306,6 +353,15 @@ void SALOME_View::LocalSelection( const SALOME_OCCPrs*, const int ) // Probably, selection is being activated in uncompatible viewframe." ); } +/*! + Virtual method, should be reimplemented in successors, by default issues a warning and does nothing. +*/ +void SALOME_View::LocalSelection( const SALOME_OCCPrs*, const std::list ) +{ +// MESSAGE( "SALOME_View::LocalSelection( const SALOME_OCCPrs* ) called! +// Probably, selection is being activated in uncompatible viewframe." ); +} + /*! Virtual method, should be reimplemented in successors, by default issues a warning and does nothing. */ @@ -385,3 +441,9 @@ void SALOME_Displayer::Update( SALOME_Prs2d* ) // MESSAGE( "SALOME_Displayer::Update( SALOME_Prs2d* ) called! Probably, presentation is being updated in uncompatible viewframe." ); } +/*! + Virtual method, should be reimplemented in successors, by default does nothing. +*/ +void SALOME_Displayer::UpdateVisibility( SALOME_View*, const SALOME_Prs*, bool ) +{ +}