Add QCocoaNativeInterface.

Supports getting the NSOpenGLContext for now.
bb10
Morten Sorvig 2011-05-20 10:47:59 +02:00
parent ea7277690d
commit e285501267
7 changed files with 135 additions and 4 deletions

View File

@ -10,7 +10,9 @@ OBJECTIVE_SOURCES = main.mm \
qcocoaeventloopintegration.mm \
qcocoaautoreleasepool.mm \
qnswindowdelegate.mm \
qcocoaglcontext.mm
qcocoaglcontext.mm \
qcocoanativeinterface.mm
OBJECTIVE_HEADERS = qcocoaintegration.h \
qcocoawindowsurface.h \
@ -19,7 +21,10 @@ OBJECTIVE_HEADERS = qcocoaintegration.h \
qcocoaeventloopintegration.h \
qcocoaautoreleasepool.h \
qnswindowdelegate.h \
qcocoaglcontext.h
qcocoaglcontext.h \
qcocoanativeinterface.h
DEFINES += QT_BUILD_COCOA_LIB
#add libz for freetype.
LIBS += -lz
@ -30,4 +35,3 @@ QT += core-private gui-private
include(../fontdatabases/basicunix/basicunix.pri)
target.path += $$[QT_INSTALL_PLUGINS]/platforms
INSTALLS += target

View File

@ -18,6 +18,7 @@ public:
void* getProcAddress(const QString& procName);
QWindowFormat windowFormat() const;
static NSOpenGLPixelFormat *createNSOpenGLPixelFormat();
NSOpenGLContext *nsOpenGLContext() const;
private:
NSOpenGLView *m_glView;
};

View File

@ -76,3 +76,8 @@ NSOpenGLPixelFormat *QCocoaGLContext::createNSOpenGLPixelFormat()
return pixelFormat;
}
NSOpenGLContext *QCocoaGLContext::nsOpenGLContext() const
{
return [m_glView openGLContext];
}

View File

@ -85,7 +85,7 @@ public:
QPlatformFontDatabase *fontDatabase() const;
QPlatformEventLoopIntegration *createEventLoopIntegration() const;
QPlatformNativeInterface *nativeInterface() const;
private:
QList<QPlatformScreen *> mScreens;
QPlatformFontDatabase *mFontDb;

View File

@ -44,6 +44,7 @@
#include "qcocoawindow.h"
#include "qcocoawindowsurface.h"
#include "qcocoaeventloopintegration.h"
#include "qcocoanativeinterface.h"
#include "qbasicunixfontdatabase.h"
@ -127,4 +128,10 @@ QPlatformEventLoopIntegration *QCocoaIntegration::createEventLoopIntegration() c
{
return new QCocoaEventLoopIntegration();
}
QPlatformNativeInterface *QCocoaIntegration::nativeInterface() const
{
return new QCocoaNativeInterface();
}
QT_END_NAMESPACE

View File

@ -0,0 +1,55 @@
/****************************************************************************
**
** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the plugins of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
** contained in the Technology Preview License Agreement accompanying
** this package.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** If you have questions regarding the use of this file, please contact
** Nokia at qt-info@nokia.com.
**
**
**
**
**
**
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QCOCOANATIVEINTERFACE_H
#define QCOCOANATIVEINTERFACE_H
#include <QtGui/QPlatformNativeInterface>
class QWidget;
class QCocoaNativeInterface : public QPlatformNativeInterface
{
public:
void *nativeResourceForWindow(const QByteArray &resourceString, QWindow *window);
};
#endif // QCOCOANATIVEINTERFACE_H

View File

@ -0,0 +1,59 @@
/****************************************************************************
**
** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the plugins of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
** contained in the Technology Preview License Agreement accompanying
** this package.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** If you have questions regarding the use of this file, please contact
** Nokia at qt-info@nokia.com.
**
**
**
**
**
**
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "qcocoanativeinterface.h"
#include "qcocoaglcontext.h"
#include <qbytearray.h>
#include <qwindow.h>
#include "qplatformwindow_qpa.h"
#include "qwindowformat_qpa.h"
#include "qplatformglcontext_qpa.h"
#include "qwindowcontext_qpa.h"
#include <qdebug.h>
void *QCocoaNativeInterface::nativeResourceForWindow(const QByteArray &resourceString, QWindow *window)
{
if (resourceString == "nsopenglcontext") {
QPlatformGLContext *platformContext = window->glContext()->handle();
return static_cast<QCocoaGLContext *>(platformContext)->nsOpenGLContext();
}
return 0;
}