1/////////////////////////////////////////////////////////////////////////////
2// Name:        src/cocoa/glcanvas.mm
3// Purpose:     wxGLContext, wxGLCanvas
4// Author:      David Elliott
5// Modified by:
6// Created:     2004/09/29
7// Copyright:   (c) 2004 David Elliott
8// Licence:     wxWindows licence
9/////////////////////////////////////////////////////////////////////////////
10
11#include "wx/wxprec.h"
12
13#if wxUSE_GLCANVAS
14
15#ifndef WX_PRECOMP
16    #include "wx/app.h"
17#endif //WX_PRECOMP
18#include "wx/glcanvas.h"
19
20#include "wx/cocoa/autorelease.h"
21
22#import <AppKit/NSOpenGL.h>
23#import <AppKit/NSOpenGLView.h>
24
25wxGLContext::wxGLContext(wxGLCanvas *win, const wxGLContext *other)
26{
27    // TODO
28}
29
30wxGLContext::~wxGLContext()
31{
32}
33
34void wxGLContext::SetCurrent(const wxGLCanvas& win) const
35{
36    [[win.GetNSOpenGLView() openGLContext] makeCurrentContext];
37}
38
39IMPLEMENT_CLASS(wxGLCanvas, wxWindow)
40// WX_IMPLEMENT_COCOA_OWNER(wxGLCanvas,NSOpenGLView,NSView,NSView)
41
42bool wxGLCanvas::Create(wxWindow *parent,
43                        wxWindowID winid,
44                        const wxPoint& pos,
45                        const wxSize& size,
46                        long style,
47                        const wxString& name,
48                        const int *attribList,
49                        const wxPalette& palette)
50{
51    wxAutoNSAutoreleasePool pool;
52    if(!CreateBase(parent,winid,pos,size,style,wxDefaultValidator,name))
53        return false;
54    SetNSView([[NSOpenGLView alloc] initWithFrame: MakeDefaultNSRect(size)
55                pixelFormat:[NSOpenGLView defaultPixelFormat]]);
56    [m_cocoaNSView release];
57    if(m_parent)
58        m_parent->CocoaAddChild(this);
59    SetInitialFrameRect(pos,size);
60
61    return true;
62}
63
64wxGLCanvas::~wxGLCanvas()
65{
66}
67
68void wxGLCanvas::SwapBuffers()
69{
70    [[GetNSOpenGLView() openGLContext] flushBuffer];
71}
72
73#endif // wxUSE_GLCANVAS
74