/* -*-c++-*- header - Open Producer - Copyright (C) 2002 Don Burns
 * Distributed under the terms of the GNU LIBRARY GENERAL PUBLIC LICENSE (LGPL)
 * as published by the Free Software Foundation.
 */
#ifndef PRODUCER_TYPES
#define PRODUCER_TYPES 1

#include <Producer/Export>

#ifdef _WIN32_IMPLEMENTATION
    #include <windows.h>
    #include <GL/gl.h>

    namespace Producer {

        typedef HDC      Display;
        typedef HWND     Window;
        typedef HGLRC    GLContext;
        typedef WPARAM   KeySymbol;
        typedef HCURSOR  Cursor;
        typedef PIXELFORMATDESCRIPTOR  VisualInfo;
    
    }
#endif

#ifdef _X11_IMPLEMENTATION

    #include <X11/Xlib.h>  
    #include <X11/Xutil.h>
    #include <GL/glx.h>

    namespace Producer {

        // Display, Window and Cursor natively defined
        typedef GLXContext GLContext;
        typedef KeySym    KeySymbol;
        typedef XVisualInfo VisualInfo;

    }

#endif

namespace Producer {

template <class T> class ref_ptr;
template <class T> class BlockingQueue;

class EventQueue;
class Event;
//typedef BlockingQueue <ref_ptr<Event> > EventQueue;

}

#endif
