/* ----------------------------------------------------------------------------
 * This file was automatically generated by SWIG (http://www.swig.org).
 * Version 1.3.39
 * 
 * This file is not intended to be easily readable and contains a number of 
 * coding conventions designed to improve portability and efficiency. Do not make
 * changes to this file unless you know what you are doing--modify the SWIG 
 * interface file instead. 
 * ----------------------------------------------------------------------------- */

#ifndef SWIG_GLUtils_WRAP_H_
#define SWIG_GLUtils_WRAP_H_

#include <map>
#include <string>


class SwigDirector_GLUIWindow : public GLUIWindow, public Swig::Director {

public:
    SwigDirector_GLUIWindow(PyObject *self, GLUIContainer *parent, int x = 0, int y = 0, int width = 0, int height = 0, int minWidth = -1, int minHeight = -1);
    virtual ~SwigDirector_GLUIWindow();
    virtual GLUISize getMinSize() const;
    virtual void captureMouse(GLUIWindow *window = NULL);
    virtual void releaseMouse(GLUIWindow *window = NULL);
    virtual bool hasCapture(GLUIWindow *window = NULL);
    virtual bool onLeftDown(GLUIMouseEvent *mouseEvent);
    virtual bool onLeftUp(GLUIMouseEvent *mouseEvent);
    virtual bool onLeftDClick(GLUIMouseEvent *mouseEvent);
    virtual bool onMiddleDown(GLUIMouseEvent *mouseEvent);
    virtual bool onMiddleUp(GLUIMouseEvent *mouseEvent);
    virtual bool onMiddleDClick(GLUIMouseEvent *mouseEvent);
    virtual bool onRightDown(GLUIMouseEvent *mouseEvent);
    virtual bool onRightUp(GLUIMouseEvent *mouseEvent);
    virtual bool onRightDClick(GLUIMouseEvent *mouseEvent);
    virtual bool onMotion(GLUIMouseEvent *mouseEvent);
    virtual bool onMouseWheel(GLUIMouseEvent *mouseEvent);
    virtual void draw();


/* Internal Director utilities */
public:
    bool swig_get_inner(const char* name) const {
      std::map<std::string, bool>::const_iterator iv = inner.find(name);
      return (iv != inner.end() ? iv->second : false);
    }

    void swig_set_inner(const char* name, bool val) const
    { inner[name] = val;}

private:
    mutable std::map<std::string, bool> inner;


#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
/* VTable implementation */
    PyObject *swig_get_method(size_t method_index, const char *method_name) const {
      PyObject *method = vtable[method_index];
      if (!method) {
        swig::SwigVar_PyObject name = SWIG_Python_str_FromChar(method_name);
        method = PyObject_GetAttr(swig_get_self(), name);
        if (method == NULL) {
          std::string msg = "Method in class GLUIWindow doesn't exist, undefined ";
          msg += method_name;
          Swig::DirectorMethodException::raise(msg.c_str());
        }
        vtable[method_index] = method;
      };
      return method;
    }
private:
    mutable swig::SwigVar_PyObject vtable[19];
#endif

};


class SwigDirector_GLUIContainer : public GLUIContainer, public Swig::Director {

public:
    SwigDirector_GLUIContainer(PyObject *self, GLUIContainer *parent, int x = 0, int y = 0, int width = 0, int height = 0, int minWidth = -1, int minHeight = -1);
    virtual ~SwigDirector_GLUIContainer();
    virtual GLUISize getMinSize() const;
    virtual void captureMouse(GLUIWindow *window = NULL);
    virtual void releaseMouse(GLUIWindow *window = NULL);
    virtual bool hasCapture(GLUIWindow *window = NULL);
    virtual bool onLeftDown(GLUIMouseEvent *mouseEvent);
    virtual bool onLeftUp(GLUIMouseEvent *mouseEvent);
    virtual bool onLeftDClick(GLUIMouseEvent *mouseEvent);
    virtual bool onMiddleDown(GLUIMouseEvent *mouseEvent);
    virtual bool onMiddleUp(GLUIMouseEvent *mouseEvent);
    virtual bool onMiddleDClick(GLUIMouseEvent *mouseEvent);
    virtual bool onRightDown(GLUIMouseEvent *mouseEvent);
    virtual bool onRightUp(GLUIMouseEvent *mouseEvent);
    virtual bool onRightDClick(GLUIMouseEvent *mouseEvent);
    virtual bool onMotion(GLUIMouseEvent *mouseEvent);
    virtual bool onMouseWheel(GLUIMouseEvent *mouseEvent);
    virtual void draw();


/* Internal Director utilities */
public:
    bool swig_get_inner(const char* name) const {
      std::map<std::string, bool>::const_iterator iv = inner.find(name);
      return (iv != inner.end() ? iv->second : false);
    }

    void swig_set_inner(const char* name, bool val) const
    { inner[name] = val;}

private:
    mutable std::map<std::string, bool> inner;


#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
/* VTable implementation */
    PyObject *swig_get_method(size_t method_index, const char *method_name) const {
      PyObject *method = vtable[method_index];
      if (!method) {
        swig::SwigVar_PyObject name = SWIG_Python_str_FromChar(method_name);
        method = PyObject_GetAttr(swig_get_self(), name);
        if (method == NULL) {
          std::string msg = "Method in class GLUIContainer doesn't exist, undefined ";
          msg += method_name;
          Swig::DirectorMethodException::raise(msg.c_str());
        }
        vtable[method_index] = method;
      };
      return method;
    }
private:
    mutable swig::SwigVar_PyObject vtable[19];
#endif

};


class SwigDirector_GLUITopLevelWindow : public GLUITopLevelWindow, public Swig::Director {

public:
    SwigDirector_GLUITopLevelWindow(PyObject *self, int width = 0, int height = 0);
    virtual ~SwigDirector_GLUITopLevelWindow();
    virtual GLUISize getMinSize() const;
    virtual void captureMouse(GLUIWindow *window = NULL);
    virtual void releaseMouse(GLUIWindow *window = NULL);
    virtual bool hasCapture(GLUIWindow *window = NULL);
    virtual bool onLeftDown(GLUIMouseEvent *mouseEvent);
    virtual bool onLeftUp(GLUIMouseEvent *mouseEvent);
    virtual bool onLeftDClick(GLUIMouseEvent *mouseEvent);
    virtual bool onMiddleDown(GLUIMouseEvent *mouseEvent);
    virtual bool onMiddleUp(GLUIMouseEvent *mouseEvent);
    virtual bool onMiddleDClick(GLUIMouseEvent *mouseEvent);
    virtual bool onRightDown(GLUIMouseEvent *mouseEvent);
    virtual bool onRightUp(GLUIMouseEvent *mouseEvent);
    virtual bool onRightDClick(GLUIMouseEvent *mouseEvent);
    virtual bool onMotion(GLUIMouseEvent *mouseEvent);
    virtual bool onMouseWheel(GLUIMouseEvent *mouseEvent);
    virtual void draw();
    virtual void startMouseCapture();
    virtual void stopMouseCapture();


/* Internal Director utilities */
public:
    bool swig_get_inner(const char* name) const {
      std::map<std::string, bool>::const_iterator iv = inner.find(name);
      return (iv != inner.end() ? iv->second : false);
    }

    void swig_set_inner(const char* name, bool val) const
    { inner[name] = val;}

private:
    mutable std::map<std::string, bool> inner;


#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
/* VTable implementation */
    PyObject *swig_get_method(size_t method_index, const char *method_name) const {
      PyObject *method = vtable[method_index];
      if (!method) {
        swig::SwigVar_PyObject name = SWIG_Python_str_FromChar(method_name);
        method = PyObject_GetAttr(swig_get_self(), name);
        if (method == NULL) {
          std::string msg = "Method in class GLUITopLevelWindow doesn't exist, undefined ";
          msg += method_name;
          Swig::DirectorMethodException::raise(msg.c_str());
        }
        vtable[method_index] = method;
      };
      return method;
    }
private:
    mutable swig::SwigVar_PyObject vtable[21];
#endif

};


class SwigDirector_GLUICallback : public GLUICallback, public Swig::Director {

public:
    SwigDirector_GLUICallback(PyObject *self);
    virtual ~SwigDirector_GLUICallback();
    virtual void execute();


/* Internal Director utilities */
public:
    bool swig_get_inner(const char* name) const {
      std::map<std::string, bool>::const_iterator iv = inner.find(name);
      return (iv != inner.end() ? iv->second : false);
    }

    void swig_set_inner(const char* name, bool val) const
    { inner[name] = val;}

private:
    mutable std::map<std::string, bool> inner;


#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
/* VTable implementation */
    PyObject *swig_get_method(size_t method_index, const char *method_name) const {
      PyObject *method = vtable[method_index];
      if (!method) {
        swig::SwigVar_PyObject name = SWIG_Python_str_FromChar(method_name);
        method = PyObject_GetAttr(swig_get_self(), name);
        if (method == NULL) {
          std::string msg = "Method in class GLUICallback doesn't exist, undefined ";
          msg += method_name;
          Swig::DirectorMethodException::raise(msg.c_str());
        }
        vtable[method_index] = method;
      };
      return method;
    }
private:
    mutable swig::SwigVar_PyObject vtable[1];
#endif

};


#endif
