Salome HOME
Copyrights update
[modules/gui.git] / src / SVTK / SVTK_Functor.h
1 // Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
2 // 
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either 
6 // version 2.1 of the License.
7 // 
8 // This library is distributed in the hope that it will be useful 
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of 
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public  
14 // License along with this library; if not, write to the Free Software 
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/
18 //
19 #ifndef SVTK_Functor_H
20 #define SVTK_Functor_H
21
22 #include <functional>
23
24 #include <string>
25
26 #include <VTKViewer_Functor.h>
27
28 #include "SALOME_InteractiveObject.hxx"
29
30 namespace VTK
31 {
32   template<class TActor> 
33   struct TIsSameEntry
34   {
35     std::string myEntry;
36     TIsSameEntry(const char* theEntry): myEntry(theEntry) {}
37     bool operator()(TActor* theActor)
38     {
39       if ( theActor->hasIO() )
40       {
41         Handle(SALOME_InteractiveObject) anIO = theActor->getIO();
42         if ( anIO->hasEntry() )
43           return myEntry == anIO->getEntry();
44       }
45       return false;
46     }
47   };
48
49
50   //----------------------------------------------------------------
51   template<class TActor> 
52   struct TIsSameIObject
53   {
54     Handle(SALOME_InteractiveObject) myIObject;
55     TIsSameIObject(const Handle(SALOME_InteractiveObject)& theIObject):
56       myIObject(theIObject)
57     {}
58     bool operator()(TActor* theActor)
59     {
60       if(theActor->hasIO())
61       {
62         Handle(SALOME_InteractiveObject) anIO = theActor->getIO();
63         return myIObject->isSame(anIO);
64       }
65       return false;
66     }
67   };
68
69
70   //----------------------------------------------------------------
71   template<class TActor> 
72   struct THighlight
73   {
74     bool myIsHighlight;
75     THighlight(bool theIsHighlight): myIsHighlight( theIsHighlight ) {}
76     void operator()(TActor* theActor) 
77     {
78       if(theActor->GetVisibility() && theActor->GetMapper())
79         theActor->highlight( myIsHighlight );
80     }
81   };
82
83 }
84
85
86 #endif