X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/56b9c74101566aa241d1846a148d3a01980b7431..b11708106f93d28dbb47218b18e02674ad6c0cdb:/utils/glcanvas/gtk/glcanvas.h diff --git a/utils/glcanvas/gtk/glcanvas.h b/utils/glcanvas/gtk/glcanvas.h new file mode 100644 index 0000000000..c32e176a61 --- /dev/null +++ b/utils/glcanvas/gtk/glcanvas.h @@ -0,0 +1,119 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: glcanvas.h +// Purpose: wxGLCanvas, for using OpenGL/Mesa with wxWindows and GTK +// Author: Robert Roebling +// Modified by: +// Created: 17/8/98 +// RCS-ID: $Id$ +// Copyright: (c) Robert Roebling +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#ifdef __GNUG__ +#pragma interface "glcanvas.h" +#endif + +#ifndef _WX_GLCANVAS_H_ +#define _WX_GLCANVAS_H_ + +#include "wx/defs.h" +#include "wx/scrolwin.h" + +extern "C" { +#include "GL/gl.h" +#include "GL/glx.h" +#include "GL/glu.h" +} + +//--------------------------------------------------------------------------- +// classes +//--------------------------------------------------------------------------- + +class wxGLContext; +class wxGLCanvas; + +//--------------------------------------------------------------------------- +// wxGLContext +//--------------------------------------------------------------------------- + + +class wxGLContext: public wxObject +{ + DECLARE_CLASS(wxGLContext) + + public: + + wxGLContext( bool isRGB, wxWindow *win, const wxPalette& palette = wxNullPalette ); + ~wxGLContext(); + + void SetCurrent(); + void SetColour(const char *colour); + void SwapBuffers(); + + void SetupPixelFormat(); + void SetupPalette(const wxPalette& palette); + wxPalette CreateDefaultPalette(); + + inline wxPalette* GetPalette() const { return (wxPalette*) & m_palette; } + inline wxWindow* GetWindow() const { return m_window; } + inline GtkWidget* GetWidget() const { return m_widget; } + inline GLXContext GetContext() const { return m_glContext; } + + public: + + GLXContext m_glContext; + + GtkWidget *m_widget; + wxPalette m_palette; + wxWindow* m_window; +}; + +//--------------------------------------------------------------------------- +// wxGLContext +//--------------------------------------------------------------------------- + +class wxGLCanvas: public wxScrolledWindow +{ + DECLARE_CLASS(wxGLCanvas) + + public: + wxGLCanvas( wxWindow *parent, wxWindowID id = -1, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, const wxString& name = "GLCanvas", + int *attribList = (int*) NULL, + const wxPalette& palette = wxNullPalette ); + + bool Create( wxWindow *parent, wxWindowID id = -1, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, const wxString& name = "GLCanvas", + int *attribList = (int*) NULL, + const wxPalette& palette = wxNullPalette ); + + ~wxGLCanvas(); + + void SetCurrent(); + void SetColour(const char *colour); + void SwapBuffers(); + + void OnSize(wxSizeEvent& event); + + inline wxGLContext* GetContext() const { return m_glContext; } + + // implementation + + virtual void SetSize( int x, int y, int width, int height, + int sizeFlags = wxSIZE_AUTO ); + virtual void SetSize( int width, int height ); + + virtual GtkWidget *GetConnectWidget(); + bool IsOwnGtkWindow( GdkWindow *window ); + + wxGLContext *m_glContext; + GtkWidget *m_glWidget; + + DECLARE_EVENT_TABLE() +}; + +#endif