/*
Copyright (C) 1999-2007 id Software, Inc. and contributors.
For a list of contributors, see the accompanying CONTRIBUTORS file.

This file is part of GtkRadiant.

GtkRadiant 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.

GtkRadiant is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GtkRadiant; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

//-----------------------------------------------------------------------------
//
// DESCRIPTION
// This contains functions specific to the UI toolkit
//   it is best to avoid using them, but they are provided for backward compatibility with the older interfaces
//   the abstracted UI layer in iUI.h is not sufficient for some tasks .. no other choice than to rely on UI specific code

#ifndef __IGL_GTK_H__
#define __IGL_GTK_H__

#define UIGTK_MAJOR "uigtk"

// All OpenGL stuff is handled by GLWidget to ensure portability
typedef GtkWidget* (WINAPI* PFN_QERAPP_GETQEGLOBALSGLWIDGET) (); 
typedef GtkWidget* (WINAPI* PFN_GLWIDGET_NEW) (gboolean zbufffer, GtkWidget* share);
typedef void       (WINAPI* PFN_GLWIDGET_SWAPBUFFERS) (GtkWidget* widget);
typedef gboolean   (WINAPI* PFN_GLWIDGET_MAKECURRENT) (GtkWidget* widget);
typedef void       (WINAPI* PFN_GLWIDGET_DESTROYCONTEXT) (GtkWidget* widget);
typedef void       (WINAPI* PFN_GLWIDGET_CREATECONTEXT) (GtkWidget* widget);
#if 0
typedef gpointer   (WINAPI* PFN_GLWIDGET_GETCONTEXT) (GtkWidget* widget);
#endif

struct _QERUIGtkTable
{
  int m_nSize;
  PFN_QERAPP_GETQEGLOBALSGLWIDGET       m_pfn_GetQeglobalsGLWidget;
  PFN_GLWIDGET_NEW                      m_pfn_glwidget_new;
  PFN_GLWIDGET_SWAPBUFFERS              m_pfn_glwidget_swap_buffers;
  PFN_GLWIDGET_MAKECURRENT              m_pfn_glwidget_make_current;
  PFN_GLWIDGET_DESTROYCONTEXT           m_pfn_glwidget_destroy_context;
  PFN_GLWIDGET_CREATECONTEXT            m_pfn_glwidget_create_context;
#if 0
  PFN_GLWIDGET_GETCONTEXT               m_pfn_glwidget_get_context;
#endif
};

#endif
