]> SALOME platform Git repositories - modules/visu.git/blob - src/OBJECT/VISU_ActorFactory.h
Salome HOME
Join modifications from BR_Dev_For_4_0 tag V4_1_1.
[modules/visu.git] / src / OBJECT / VISU_ActorFactory.h
1 //  VISU OBJECT : interactive object for VISU entities implementation
2 //
3 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
5 // 
6 //  This library is free software; you can redistribute it and/or 
7 //  modify it under the terms of the GNU Lesser General Public 
8 //  License as published by the Free Software Foundation; either 
9 //  version 2.1 of the License. 
10 // 
11 //  This library is distributed in the hope that it will be useful, 
12 //  but WITHOUT ANY WARRANTY; without even the implied warranty of 
13 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
14 //  Lesser General Public License for more details. 
15 // 
16 //  You should have received a copy of the GNU Lesser General Public 
17 //  License along with this library; if not, write to the Free Software 
18 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
19 // 
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 //
23 //
24 //  File   : 
25 //  Author : 
26 //  Module : VISU
27 //  $Header$
28
29 #ifndef VISU_ACTOR_FACTORY_H
30 #define VISU_ACTOR_FACTORY_H
31
32 #include "VISU_BoostSignals.h"
33
34 class VISU_Actor;
35
36 //----------------------------------------------------------------------------
37 namespace VISU 
38
39   //! This class defines an abstaract interface to manage actors
40   /*!
41     Actors are created by corresponding presentations and published in the defined view.
42     Each actor can be published only into one view but one presentation can have many actors.
43     Due to the complexity of the actor presentation interaction the new interface defines common 
44     and simply way to manage them properly.
45     @note
46     This interface inherits from boost::bsignals::trackable in order to provide automatic 
47     diconnection from defined signals if the object is destroyed.
48   */
49   struct TActorFactory: public virtual boost::signalslib::trackable
50   {
51     //! Just to make this class virtual
52     virtual 
53     ~TActorFactory()
54     {}
55
56     //! Gets know whether the factory instance can be used for actor management or not
57     virtual
58     bool 
59     GetActiveState() = 0;
60
61     //! Return modified time of the factory
62     virtual
63     unsigned long int 
64     GetMTime() = 0;
65
66     //! To update the actor
67     virtual 
68     void
69     UpdateActor(VISU_Actor* theActor) = 0;
70
71     //! To unregister the actor
72     virtual 
73     void
74     RemoveActor(VISU_Actor* theActor) = 0;
75   };
76 }
77
78 #endif //VISU_ACTOR_FACTORY_H