Blender  V2.59
GHOST_EventManager.h
Go to the documentation of this file.
00001 /*
00002  * $Id: GHOST_EventManager.h 35152 2011-02-25 11:28:33Z jesterking $
00003  * ***** BEGIN GPL LICENSE BLOCK *****
00004  *
00005  * This program is free software; you can redistribute it and/or
00006  * modify it under the terms of the GNU General Public License
00007  * as published by the Free Software Foundation; either version 2
00008  * of the License, or (at your option) any later version.
00009  *
00010  * This program is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013  * GNU General Public License for more details.
00014  *
00015  * You should have received a copy of the GNU General Public License
00016  * along with this program; if not, write to the Free Software Foundation,
00017  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
00018  *
00019  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
00020  * All rights reserved.
00021  *
00022  * The Original Code is: all of this file.
00023  *
00024  * Contributor(s): none yet.
00025  *
00026  * ***** END GPL LICENSE BLOCK *****
00027  */
00028 
00034 #ifndef _GHOST_EVENT_MANAGER_H_
00035 #define _GHOST_EVENT_MANAGER_H_
00036 
00037 #include <deque>
00038 #include <vector>
00039 
00040 #include "GHOST_IEventConsumer.h"
00041 
00042 
00051 class GHOST_EventManager
00052 {
00053 public:
00057         GHOST_EventManager();
00058 
00062         virtual ~GHOST_EventManager();
00063 
00068         virtual GHOST_TUns32    getNumEvents();
00069 
00075         virtual GHOST_TUns32    getNumEvents(GHOST_TEventType type);
00076 
00082         virtual GHOST_IEvent* peekEvent();
00083 
00090         virtual GHOST_TSuccess pushEvent(GHOST_IEvent* event);
00091 
00096         virtual bool dispatchEvent(GHOST_IEvent* event);
00097 
00103         virtual bool dispatchEvent();
00104 
00110         virtual bool dispatchEvents();
00111 
00117         virtual GHOST_TSuccess addConsumer(GHOST_IEventConsumer* consumer);
00118 
00124         virtual GHOST_TSuccess removeConsumer(GHOST_IEventConsumer* consumer);
00125 
00130                 virtual void
00131          removeWindowEvents(
00132                 GHOST_IWindow* window
00133          );
00134 
00142                 virtual void
00143         removeTypeEvents(
00144                 GHOST_TEventType type,
00145                 GHOST_IWindow* window = 0
00146         );
00147 
00148 protected:
00154         virtual GHOST_IEvent* popEvent();
00155 
00159         virtual void disposeEvents();
00160 
00162         typedef std::deque<GHOST_IEvent*> TEventStack;
00163         
00165         std::deque<GHOST_IEvent*> m_events;
00166 
00168         typedef std::vector<GHOST_IEventConsumer*> TConsumerVector;
00169 
00171         TConsumerVector m_consumers;
00172 };
00173 
00174 #endif // _GHOST_EVENT_MANAGER_H_
00175