X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5c6eb3a84be918dcfed2496d014549e13af0f0e9..ed8b46bba32c76a5544e6043a0a6de21eda5a712:/include/wx/osx/glcanvas.h diff --git a/include/wx/osx/glcanvas.h b/include/wx/osx/glcanvas.h index 3dfff78fa3..3377084b26 100644 --- a/include/wx/osx/glcanvas.h +++ b/include/wx/osx/glcanvas.h @@ -1,5 +1,163 @@ -#ifdef __WXMAC_CLASSIC__ -#include "wx/mac/classic/glcanvas.h" +///////////////////////////////////////////////////////////////////////////// +// Name: wx/osx/glcanvas.h +// Purpose: wxGLCanvas, for using OpenGL with wxWidgets under Macintosh +// Author: Stefan Csomor +// Modified by: +// Created: 1998-01-01 +// RCS-ID: $Id$ +// Copyright: (c) Stefan Csomor +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_GLCANVAS_H_ +#define _WX_GLCANVAS_H_ + +#ifdef __WXOSX_IPHONE__ +#import +#import +#define wxUSE_OPENGL_EMULATION 1 #else -#include "wx/mac/carbon/glcanvas.h" -#endif \ No newline at end of file +#include +#endif + +#include "wx/vector.h" + +// low level calls + +WXDLLIMPEXP_GL WXGLContext WXGLCreateContext( WXGLPixelFormat pixelFormat, WXGLContext shareContext ); +WXDLLIMPEXP_GL void WXGLDestroyContext( WXGLContext context ); + +WXDLLIMPEXP_GL WXGLContext WXGLGetCurrentContext(); +WXDLLIMPEXP_GL bool WXGLSetCurrentContext(WXGLContext context); + +WXDLLIMPEXP_GL WXGLPixelFormat WXGLChoosePixelFormat(const int *attribList); +WXDLLIMPEXP_GL void WXGLDestroyPixelFormat( WXGLPixelFormat pixelFormat ); + +class WXDLLIMPEXP_GL wxGLContext : public wxGLContextBase +{ +public: + wxGLContext(wxGLCanvas *win, const wxGLContext *other = NULL); + virtual ~wxGLContext(); + + virtual bool SetCurrent(const wxGLCanvas& win) const; + + // Mac-specific + WXGLContext GetWXGLContext() const { return m_glContext; } + +private: + WXGLContext m_glContext; + + wxDECLARE_NO_COPY_CLASS(wxGLContext); +}; + +class WXDLLIMPEXP_GL wxGLCanvas : public wxGLCanvasBase +{ +public: + wxGLCanvas(wxWindow *parent, + wxWindowID id = wxID_ANY, + const int *attribList = NULL, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + const wxString& name = wxGLCanvasName, + const wxPalette& palette = wxNullPalette); + + bool Create(wxWindow *parent, + wxWindowID id = wxID_ANY, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + const wxString& name = wxGLCanvasName, + const int *attribList = NULL, + const wxPalette& palette = wxNullPalette); + + virtual ~wxGLCanvas(); + + // implement wxGLCanvasBase methods + virtual bool SwapBuffers(); + + + // Mac-specific functions + // ---------------------- + + // return true if multisample extension is supported + static bool IsAGLMultiSampleAvailable(); + + // return the pixel format used by this window + WXGLPixelFormat GetWXGLPixelFormat() const { return m_glFormat; } + + // update the view port of the current context to match this window + void SetViewport(); + + + // deprecated methods + // ------------------ + +#if WXWIN_COMPATIBILITY_2_8 + wxDEPRECATED( + wxGLCanvas(wxWindow *parent, + wxWindowID id = wxID_ANY, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + const wxString& name = wxGLCanvasName, + const int *attribList = NULL, + const wxPalette& palette = wxNullPalette) + ); + + wxDEPRECATED( + wxGLCanvas(wxWindow *parent, + const wxGLContext *shared, + wxWindowID id = wxID_ANY, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + const wxString& name = wxGLCanvasName, + const int *attribList = NULL, + const wxPalette& palette = wxNullPalette) + ); + + wxDEPRECATED( + wxGLCanvas(wxWindow *parent, + const wxGLCanvas *shared, + wxWindowID id = wxID_ANY, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + const wxString& name = wxGLCanvasName, + const int *attribList = NULL, + const wxPalette& palette = wxNullPalette) + ); +#endif // WXWIN_COMPATIBILITY_2_8 + + // implementation-only from now on + +#if wxOSX_USE_CARBON + // Unlike some other platforms, this must get called if you override it, + // i.e. don't forget "event.Skip()" in your EVT_SIZE handler + void OnSize(wxSizeEvent& event); + + virtual void MacSuperChangedPosition(); + virtual void MacTopLevelWindowChangedPosition(); + virtual void MacVisibilityChanged(); + + void MacUpdateView(); + + GLint GetAglBufferName() const { return m_bufferName; } +#endif + +protected: + WXGLPixelFormat m_glFormat; + +#if wxOSX_USE_CARBON + bool m_macCanvasIsShown, + m_needsUpdate; + WXGLContext m_dummyContext; + GLint m_bufferName; +#endif + + DECLARE_EVENT_TABLE() + DECLARE_CLASS(wxGLCanvas) +}; + +#endif // _WX_GLCANVAS_H_