#include "WXGLWindow.h"

void WXGLWindow::SwapBuffers() {
    glCanvas->SwapBuffers();
}

void WXGLWindow::SetWindowText(const char *text) {
    frame->SetTitle(wxString::FromAscii(text));
}

bool WXGLWindow::PeekMessages() {
    // TODO implmenent
    return false;
}

void WXGLWindow::Update() {
    updateDim();
}

bool WXGLWindow::MakeCurrent() {
    glCanvas->SetCurrent(*glCtxt);
    return true;
}
    
WXGLWindow::~WXGLWindow() {
    delete glCanvas;
    delete frame;
}

WXGLWindow::WXGLWindow() : GLWindow() {

    updateDim();

    int args[] = {WX_GL_RGBA, WX_GL_DOUBLEBUFFER, WX_GL_DEPTH_SIZE, 16, 0};

    wxSize size(GetWidth(), GetHeight());
    if (!g_Config.renderToMainframe || 
        g_VideoInitialize.pWindowHandle == NULL) {
        frame = new wxFrame((wxWindow *)g_VideoInitialize.pWindowHandle, 
                                  -1, _("Dolphin"), wxPoint(0,0), size);
    } else {
        frame = new wxFrame((wxWindow *)NULL, 
                                  -1, _("Dolphin"), wxPoint(0,0), size);
    }
    glCanvas = new wxGLCanvas(frame, wxID_ANY, args,
                                    wxPoint(0,0), size, wxSUNKEN_BORDER);
    glCtxt = new wxGLContext(glCanvas);

    frame->Show(TRUE);
    glCanvas->Show(TRUE);

    glCanvas->SetCurrent(*glCtxt);
}