X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPrs%2FSALOME_Prs.cxx;h=88177c48ad8d5af143bdb1c913abf40b8ac7aea7;hb=bf4f33e12f47caaa39edde16c7308e24ae7b515e;hp=e23180d19b807d728693bee48d0d77a9ee487103;hpb=aa05f2a1b23a54321ea7248ae9ac3463652c734e;p=modules%2Fgui.git diff --git a/src/Prs/SALOME_Prs.cxx b/src/Prs/SALOME_Prs.cxx index e23180d19..88177c48a 100755 --- a/src/Prs/SALOME_Prs.cxx +++ b/src/Prs/SALOME_Prs.cxx @@ -1,32 +1,53 @@ -// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D -// +// 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 +// // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// File: SALOME_Prs.cxx -// Created: Wed Apr 28 15:03:43 2004 -// Author: Sergey ANIKIN -// +// File: SALOME_Prs.cxx +// Author: Sergey ANIKIN, Open CASCADE S.A.S. (sergey.anikin@opencascade.com) #include "SALOME_Prs.h" -//#include "utilities.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(); +} -//using namespace std; +/*! + 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 @@ -44,12 +65,54 @@ void SALOME_OCCPrs::EraseIn( SALOME_View* v, const bool forced ) const if ( v ) v->Erase( this, forced ); } +/*! + Dispatches display operation to proper BeforeDisplay() method of SALOME_Displayer +*/ +void SALOME_OCCPrs::BeforeDisplayIn( SALOME_Displayer* d, SALOME_View* v ) const +{ + d->BeforeDisplay( v, this ); +} + +/*! + Dispatches display operation to proper AfterDisplay() method of SALOME_Displayer +*/ +void SALOME_OCCPrs::AfterDisplayIn( SALOME_Displayer* d, SALOME_View* v ) const +{ + d->AfterDisplay( v, this ); +} + +/*! + Dispatches display operation to proper BeforeErase() method of SALOME_Displayer +*/ +void SALOME_OCCPrs::BeforeEraseIn( SALOME_Displayer* d, SALOME_View* v ) const +{ + d->BeforeErase( v, this ); +} + +/*! + Dispatches display operation to proper AfterErase() method of SALOME_Displayer +*/ +void SALOME_OCCPrs::AfterEraseIn( SALOME_Displayer* d, SALOME_View* v ) const +{ + d->AfterErase( v, this ); +} + /*! Dispatches operation to proper LocalSelectionIn() method of SALOME_View */ 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 ); } /*! @@ -76,6 +139,38 @@ void SALOME_VTKPrs::EraseIn( SALOME_View* v, const bool forced ) const if ( v ) v->Erase( this, forced ); } +/*! + Dispatches display operation to proper BeforeDisplay() method of SALOME_Displayer +*/ +void SALOME_VTKPrs::BeforeDisplayIn( SALOME_Displayer* d, SALOME_View* v ) const +{ + d->BeforeDisplay( v, this ); +} + +/*! + Dispatches display operation to proper AfterDisplay() method of SALOME_Displayer +*/ +void SALOME_VTKPrs::AfterDisplayIn( SALOME_Displayer* d, SALOME_View* v ) const +{ + d->AfterDisplay( v, this ); +} + +/*! + Dispatches display operation to proper BeforeErase() method of SALOME_Displayer +*/ +void SALOME_VTKPrs::BeforeEraseIn( SALOME_Displayer* d, SALOME_View* v ) const +{ + d->BeforeErase( v, this ); +} + +/*! + Dispatches display operation to proper AfterErase() method of SALOME_Displayer +*/ +void SALOME_VTKPrs::AfterEraseIn( SALOME_Displayer* d, SALOME_View* v ) const +{ + d->AfterErase( v, this ); +} + /*! Dispatches operation to proper LocalSelectionIn() method of SALOME_View */ @@ -108,6 +203,38 @@ void SALOME_Prs2d::EraseIn( SALOME_View* v, const bool forced ) const if ( v ) v->Erase( this, forced ); } +/*! + Dispatches display operation to proper BeforeDisplay() method of SALOME_Displayer +*/ +void SALOME_Prs2d::BeforeDisplayIn( SALOME_Displayer* d, SALOME_View* v ) const +{ + d->BeforeDisplay( v, this ); +} + +/*! + Dispatches display operation to proper AfterDisplay() method of SALOME_Displayer +*/ +void SALOME_Prs2d::AfterDisplayIn( SALOME_Displayer* d, SALOME_View* v ) const +{ + d->AfterDisplay( v, this ); +} + +/*! + Dispatches display operation to proper BeforeErase() method of SALOME_Displayer +*/ +void SALOME_Prs2d::BeforeEraseIn( SALOME_Displayer* d, SALOME_View* v ) const +{ + d->BeforeErase( v, this ); +} + +/*! + Dispatches display operation to proper AfterErase() method of SALOME_Displayer +*/ +void SALOME_Prs2d::AfterEraseIn( SALOME_Displayer* d, SALOME_View* v ) const +{ + d->AfterErase( v, this ); +} + /*! Dispatches operation to proper LocalSelectionIn() method of SALOME_View */ @@ -127,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 ); } /*! @@ -145,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 ); } /*! @@ -199,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 ); } /*! @@ -209,7 +349,16 @@ void SALOME_View::EraseAll( const bool ) */ void SALOME_View::LocalSelection( const SALOME_OCCPrs*, const int ) { -// MESSAGE( "SALOME_View::LocalSelection( const SALOME_OCCPrs* ) called! \ +// 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. +*/ +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." ); } @@ -218,7 +367,7 @@ void SALOME_View::LocalSelection( const SALOME_OCCPrs*, const int ) */ void SALOME_View::LocalSelection( const SALOME_VTKPrs*, const int ) { -// MESSAGE( "SALOME_View::LocalSelection( const SALOME_VTKPrs* ) called! \ +// MESSAGE( "SALOME_View::LocalSelection( const SALOME_VTKPrs* ) called! // Probably, selection is being activated in uncompatible viewframe." ); } @@ -227,7 +376,7 @@ void SALOME_View::LocalSelection( const SALOME_VTKPrs*, const int ) */ void SALOME_View::LocalSelection( const SALOME_Prs2d*, const int ) { -// MESSAGE( "SALOME_View::LocalSelection( const SALOME_Prs2d* ) called! \ +// MESSAGE( "SALOME_View::LocalSelection( const SALOME_Prs2d* ) called! // Probably, selection is being activated in uncompatible viewframe." ); } @@ -236,10 +385,30 @@ void SALOME_View::LocalSelection( const SALOME_Prs2d*, const int ) */ void SALOME_View::GlobalSelection( const bool ) const { -// MESSAGE( "SALOME_View::GlobalSelection() called! \ +// MESSAGE( "SALOME_View::GlobalSelection() called! // Probably, selection is being activated in uncompatible viewframe." ); } +void SALOME_View::BeforeDisplay( SALOME_Displayer* d, const SALOME_Prs* p ) +{ + p->BeforeDisplayIn( d, this ); +} + +void SALOME_View::AfterDisplay( SALOME_Displayer* d, const SALOME_Prs* p ) +{ + p->AfterDisplayIn( d, this ); +} + +void SALOME_View::BeforeErase( SALOME_Displayer* d, const SALOME_Prs* p ) +{ + p->BeforeEraseIn( d, this ); +} + +void SALOME_View::AfterErase ( SALOME_Displayer* d, const SALOME_Prs* p ) +{ + p->AfterEraseIn( d, this ); +} + /*! Gives control to SALOME_Prs object, so that it could perform double dispatch */ @@ -272,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 ) +{ +}