merge with/from trunk at r35190
[blender.git] / intern / ghost / GHOST_IEvent.h
index eb60b5d2e53dfb00df0ed8b314cc9afb2f5faba7..aac732a83b7f69612bfc0f3b9994fd629edfaa9a 100644 (file)
@@ -1,14 +1,11 @@
-/**
+/*
  * $Id$
- * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
+ * ***** BEGIN GPL LICENSE BLOCK *****
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
  * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version. The Blender
- * Foundation also sells licenses for use in proprietary software under
- * the Blender License.  See http://www.blender.org/BL/ for information
- * about this.
+ * of the License, or (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -17,7 +14,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
  * All rights reserved.
  *
  * Contributor(s): none yet.
  *
- * ***** END GPL/BL DUAL LICENSE BLOCK *****
+ * ***** END GPL LICENSE BLOCK *****
  */
 
-/**
-
- * $Id$
- * Copyright (C) 2001 NaN Technologies B.V.
- * @author     Maarten Gribnau
- * @date       May 31, 2001
+/** \file ghost/GHOST_IEvent.h
+ *  \ingroup GHOST
+ * Declaration of GHOST_IEvent interface class.
  */
 
 #ifndef _GHOST_IEVENT_H_
 #define _GHOST_IEVENT_H_
 
 #include "GHOST_Types.h"
-
-class GHOST_IWindow;
+#include "GHOST_IWindow.h"
+#include "intern/GHOST_ModifierKeys.h"
 
 /**
- * Interface class for events received the operating system.
+ * Interface class for events received from GHOST.
+ * You should not need to inherit this class. The system will pass these events
+ * to the GHOST_IEventConsumer::processEvent() method of event consumers.<br>
+ * Use the getType() method to retrieve the type of event and the getData() 
+ * method to get the event data out. Using the event type you can cast the 
+ * event data to the correct event dat structure.
+ * @see GHOST_IEventConsumer#processEvent
+ * @see GHOST_TEventType
  * @author     Maarten Gribnau
  * @date       May 31, 2001
  */
@@ -71,6 +72,13 @@ public:
         */
        virtual GHOST_TUns64 getTime() = 0;
 
+       virtual void setTime(GHOST_TUns64 t) = 0;
+       
+       virtual void setPlaybackModifierKeys(GHOST_ModifierKeys keys) = 0;
+       virtual void getPlaybackModifierKeys(GHOST_ModifierKeys &keys) = 0;
+       virtual void setPlaybackCursor(GHOST_TInt32 x, GHOST_TInt32 y) = 0;
+       virtual void getPlaybackCursor(GHOST_TInt32 &x, GHOST_TInt32 &y) = 0;
+       
        /**
         * Returns the window this event was generated on, 
         * or NULL if it is a 'system' event.
@@ -83,6 +91,23 @@ public:
         * @return The event data.
         */
        virtual GHOST_TEventDataPtr getData() = 0;
+
+       virtual int serialize(char buf[256])
+       {
+               return 0;
+       }
+
+       int writeheader(char buf[256])
+       {
+               sprintf(buf, "%lf %d %d", ((double)this->getTime())*0.001, this->getType(), this->getWindow()->getID());
+               return 0;
+       }
+       
+#ifdef WITH_CXX_GUARDEDALLOC
+public:
+       void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GHOST:GHOST_IEvent"); }
+       void operator delete( void *mem ) { MEM_freeN(mem); }
+#endif
 };
 
 #endif // _GHOST_IEVENT_H_