]> git.saurik.com Git - wxWidgets.git/blame - include/wx/osx/glcanvas.h
adding new constructor for best dc-compatibility of bitmaps
[wxWidgets.git] / include / wx / osx / glcanvas.h
CommitLineData
6762286d 1/////////////////////////////////////////////////////////////////////////////
233f5738 2// Name: wx/osx/glcanvas.h
6762286d
SC
3// Purpose: wxGLCanvas, for using OpenGL with wxWidgets under Macintosh
4// Author: Stefan Csomor
5// Modified by:
6// Created: 1998-01-01
7// RCS-ID: $Id$
8// Copyright: (c) Stefan Csomor
9// Licence: wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_GLCANVAS_H_
13#define _WX_GLCANVAS_H_
14
421bb018
SC
15#ifdef __WXOSX_IPHONE__
16#import <OpenGLES/ES1/gl.h>
17#import <OpenGLES/ES1/glext.h>
b90817de 18#define wxUSE_OPENGL_EMULATION 1
421bb018 19#else
6762286d 20#include <OpenGL/gl.h>
421bb018 21#endif
6762286d 22
b90817de
SC
23#include "wx/vector.h"
24
6762286d
SC
25// low level calls
26
27WXDLLIMPEXP_GL WXGLContext WXGLCreateContext( WXGLPixelFormat pixelFormat, WXGLContext shareContext );
28WXDLLIMPEXP_GL void WXGLDestroyContext( WXGLContext context );
b90817de 29
6762286d 30WXDLLIMPEXP_GL WXGLContext WXGLGetCurrentContext();
b6ccc13c 31WXDLLIMPEXP_GL bool WXGLSetCurrentContext(WXGLContext context);
6762286d
SC
32
33WXDLLIMPEXP_GL WXGLPixelFormat WXGLChoosePixelFormat(const int *attribList);
34WXDLLIMPEXP_GL void WXGLDestroyPixelFormat( WXGLPixelFormat pixelFormat );
35
36class WXDLLIMPEXP_GL wxGLContext : public wxGLContextBase
37{
38public:
39 wxGLContext(wxGLCanvas *win, const wxGLContext *other = NULL);
40 virtual ~wxGLContext();
41
42 virtual bool SetCurrent(const wxGLCanvas& win) const;
43
44 // Mac-specific
45 WXGLContext GetWXGLContext() const { return m_glContext; }
03647350 46
6762286d
SC
47private:
48 WXGLContext m_glContext;
49
c0c133e1 50 wxDECLARE_NO_COPY_CLASS(wxGLContext);
6762286d
SC
51};
52
53class WXDLLIMPEXP_GL wxGLCanvas : public wxGLCanvasBase
54{
55public:
56 wxGLCanvas(wxWindow *parent,
57 wxWindowID id = wxID_ANY,
58 const int *attribList = NULL,
59 const wxPoint& pos = wxDefaultPosition,
60 const wxSize& size = wxDefaultSize,
61 long style = 0,
62 const wxString& name = wxGLCanvasName,
63 const wxPalette& palette = wxNullPalette);
64
65 bool Create(wxWindow *parent,
66 wxWindowID id = wxID_ANY,
67 const wxPoint& pos = wxDefaultPosition,
68 const wxSize& size = wxDefaultSize,
69 long style = 0,
70 const wxString& name = wxGLCanvasName,
71 const int *attribList = NULL,
72 const wxPalette& palette = wxNullPalette);
73
74 virtual ~wxGLCanvas();
75
76 // implement wxGLCanvasBase methods
77 virtual bool SwapBuffers();
78
79
80 // Mac-specific functions
81 // ----------------------
82
83 // return true if multisample extension is supported
84 static bool IsAGLMultiSampleAvailable();
85
86 // return the pixel format used by this window
87 WXGLPixelFormat GetWXGLPixelFormat() const { return m_glFormat; }
88
89 // update the view port of the current context to match this window
90 void SetViewport();
91
92
93 // deprecated methods
94 // ------------------
95
96#if WXWIN_COMPATIBILITY_2_8
97 wxDEPRECATED(
98 wxGLCanvas(wxWindow *parent,
99 wxWindowID id = wxID_ANY,
100 const wxPoint& pos = wxDefaultPosition,
101 const wxSize& size = wxDefaultSize,
102 long style = 0,
103 const wxString& name = wxGLCanvasName,
104 const int *attribList = NULL,
105 const wxPalette& palette = wxNullPalette)
106 );
107
108 wxDEPRECATED(
109 wxGLCanvas(wxWindow *parent,
110 const wxGLContext *shared,
111 wxWindowID id = wxID_ANY,
112 const wxPoint& pos = wxDefaultPosition,
113 const wxSize& size = wxDefaultSize,
114 long style = 0,
115 const wxString& name = wxGLCanvasName,
116 const int *attribList = NULL,
117 const wxPalette& palette = wxNullPalette)
118 );
119
120 wxDEPRECATED(
121 wxGLCanvas(wxWindow *parent,
122 const wxGLCanvas *shared,
123 wxWindowID id = wxID_ANY,
124 const wxPoint& pos = wxDefaultPosition,
125 const wxSize& size = wxDefaultSize,
126 long style = 0,
127 const wxString& name = wxGLCanvasName,
128 const int *attribList = NULL,
129 const wxPalette& palette = wxNullPalette)
130 );
131#endif // WXWIN_COMPATIBILITY_2_8
132
133 // implementation-only from now on
134
135#if wxOSX_USE_CARBON
136 // Unlike some other platforms, this must get called if you override it,
137 // i.e. don't forget "event.Skip()" in your EVT_SIZE handler
138 void OnSize(wxSizeEvent& event);
139
140 virtual void MacSuperChangedPosition();
141 virtual void MacTopLevelWindowChangedPosition();
142 virtual void MacVisibilityChanged();
143
144 void MacUpdateView();
03647350 145
6762286d
SC
146 GLint GetAglBufferName() const { return m_bufferName; }
147#endif
148
149protected:
150 WXGLPixelFormat m_glFormat;
151
152#if wxOSX_USE_CARBON
153 bool m_macCanvasIsShown,
154 m_needsUpdate;
155 WXGLContext m_dummyContext;
156 GLint m_bufferName;
157#endif
158
159 DECLARE_EVENT_TABLE()
160 DECLARE_CLASS(wxGLCanvas)
161};
162
163#endif // _WX_GLCANVAS_H_