File: [Development] / performer / src / pyper / handlers.h (download)
Revision 1.1, Mon May 21 21:40:00 2001 UTC (16 years, 4 months ago) by flynnt
Branch: MAIN
CVS Tags: HEAD
Doing some cleanup and adding the pfgtk example and the python wrapper for
Performer (pyper).
|
// from STL
#include <string>
#include <list> // simple list
#include <deque> // double ended queue
// from SGI OpenGL|Performer
#include <Performer/pf/pfNode.h>
// from CWI's Python
#include <Python.h>
const int PYPER_EVENT_TICK = 1;
const int PYPER_EVENT_SELECT = 2;
const int PYPER_EVENT_TOUCH = 4;
class PyperEvent
{
public:
PyperEvent(int tp);
~PyperEvent();
int evtype;
float timestamp;
};
class PyperTickEvent : public PyperEvent
{
public:
PyperTickEvent();
~PyperTickEvent();
};
class PyperSelectEvent : public PyperEvent
{
public:
PyperSelectEvent();
~PyperSelectEvent();
bool is_selected;
};
class PyperTouchEvent : public PyperEvent
{
public:
PyperTouchEvent();
~PyperTouchEvent();
};
class RegisteredHandler
{
public:
RegisteredHandler();
RegisteredHandler(PyObject *a_pfnode, PyObject *a_func, int msk);
~RegisteredHandler();
void QueueEvent(PyObject *ev);
void HandleEvents(void);
void Call(PyObject *pyobj, PyObject *pyevt);
PyObject *pfnode;
PyObject *func;
int evmask;
std::deque<PyObject*> eventqueue;
};
class RegisteredHandlers
{
public:
RegisteredHandlers();
~RegisteredHandlers();
void Update(void);
void GenerateTickEvents(PyObject *pyevt);
void GenerateEvent(PyObject *pyevt, PyObject *pyobj);
void AddHandler(PyObject *pyobj, PyObject *pyfunc, int msk);
std::string GetDesc(void) const;
protected:
RegisteredHandler *GetHandlerForObject(PyObject *pfnode);
RegisteredHandler *GetHandlerForChildObject(pfNode *n);
std::list<RegisteredHandler> handlers;
};