GroupGateNode.h

Go to the documentation of this file.
00001 /* ========================================================================
00002  * Copyright (c) 2006,
00003  * Institute for Computer Graphics and Vision
00004  * Graz University of Technology
00005  * All rights reserved.
00006  *
00007  * Redistribution and use in source and binary forms, with or without
00008  * modification, are permitted provided that the following conditions are
00009  * met:
00010  *
00011  * Redistributions of source code must retain the above copyright notice,
00012  * this list of conditions and the following disclaimer.
00013  *
00014  * Redistributions in binary form must reproduce the above copyright
00015  * notice, this list of conditions and the following disclaimer in the
00016  * documentation and/or other materials provided with the distribution.
00017  *
00018  * Neither the name of the Graz University of Technology nor the names of
00019  * its contributors may be used to endorse or promote products derived from
00020  * this software without specific prior written permission.
00021  *
00022  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
00023  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
00024  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
00025  * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
00026  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00027  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00028  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00029  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00030  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00031  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00032  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00033  * ========================================================================
00034  * PROJECT: OpenTracker
00035  * ======================================================================== */
00043 /* ======================================================================= */
00098 #ifndef _GROUPGATENODE_H
00099 #define _GROUPGATENODE_H
00100 
00101 #include "../OpenTracker.h"
00102 #include "GroupGateModule.h"
00103 
00104 #include <string>
00105 #include <vector>
00106 
00107 
00108 #ifndef OT_NO_GROUPGATE_SUPPORT
00109 
00110 
00111 namespace ot {
00112 
00113     typedef std::vector<std::string> NeighborsVector;
00114     typedef std::vector<Node *> NeighborPtrsVector;
00115 
00121     class OPENTRACKER_API GroupGateNode : public Node   
00122     {
00123     private:
00124         int Number;
00125         GroupGateGroup *Owner;
00126         std::string Name;
00127         NeighborsVector Neighbors;
00128         NeighborPtrsVector NeighborPtrs;
00129         bool IsActive;
00130 
00131     protected:
00132    
00134         GroupGateNode(const char *name, GroupGateGroup *owner);
00135         ~GroupGateNode();
00136 
00137         void setNumber(int num);
00138         int getNumber();
00139         void addNeighbor(const char *neighbor);
00140         bool isActive();
00141         void activate();
00142         void deactivate();
00143         const char *getGroupGateName();
00144 
00145     public:
00146         virtual int isEventGenerator()
00147         {
00148             return 1;
00149         }
00150 
00151         virtual void onEventGenerated(Event &event, Node &generator);                                
00152 
00153         friend class GroupGateModule;
00154         friend class GroupGateGroup;
00155     };
00156 
00157 
00158     class OPENTRACKER_API Override : public Node
00159     {
00160     protected:
00161         Override() : Node() 
00162         { 
00163         }
00164 
00165     public:
00166 
00167         virtual int isNodePort()
00168         {
00169             return 1;
00170         }
00171 
00172         virtual void onEventGenerated(Event &event, Node &generator)
00173         {
00174             updateObservers(event);
00175         }
00176 
00177         friend class GroupGateModule;
00178     };
00179 
00185     class OPENTRACKER_API ActiveGateNode : public Node   
00186     {
00187     private:
00188         Event event;
00189 
00190     protected:
00191    
00192         ActiveGateNode() : Node()
00193         {
00194         }
00195   
00196     public:
00197 
00198         virtual int isEventGenerator()
00199         {
00200             return 1;
00201         }
00202 
00203         void pushEvent(unsigned short groupgatenum)
00204         {
00205             event.getButton() = groupgatenum;
00206             event.timeStamp();
00207             updateObservers(event);
00208         }
00209 
00210         friend class GroupGateModule;
00211         friend class GroupGateGroup;
00212     };
00213 
00214 } // namespace ot
00215 
00216 
00217 #endif // OT_NO_GROUPGATE_SUPPORT
00218 
00219 #endif
00220 
00221 
00222 /* 
00223  * ------------------------------------------------------------
00224  *   End of GroupGateNode.h
00225  * ------------------------------------------------------------
00226  *   Automatic Emacs configuration follows.
00227  *   Local Variables:
00228  *   mode:c++
00229  *   c-basic-offset: 4
00230  *   eval: (c-set-offset 'substatement-open 0)
00231  *   eval: (c-set-offset 'case-label '+)
00232  *   eval: (c-set-offset 'statement 'c-lineup-runin-statements)
00233  *   eval: (setq indent-tabs-mode nil)
00234  *   End:
00235  * ------------------------------------------------------------ 
00236  */

Generated on Wed Feb 28 15:18:48 2007 for NaviTrack by  doxygen 1.4.6