mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-16 10:08:36 +03:00
0023701: Add Cocoa support to Qt samples
Adapted Qt samples for using Cocoa on Mac OS X
This commit is contained in:
parent
6aac585ac8
commit
5f9575b332
@ -18,9 +18,11 @@
|
|||||||
#include <Graphic3d_ExportFormat.hxx>
|
#include <Graphic3d_ExportFormat.hxx>
|
||||||
#include <QWindowsStyle>
|
#include <QWindowsStyle>
|
||||||
|
|
||||||
#ifdef WNT
|
#if defined(_WIN32) || defined(__WIN32__)
|
||||||
#include <WNT_Window.hxx>
|
#include <WNT_Window.hxx>
|
||||||
#include <Graphic3d_WNTGraphicDevice.hxx>
|
#include <Graphic3d_WNTGraphicDevice.hxx>
|
||||||
|
#elif defined(__APPLE__) && !defined(MACOSX_USE_GLX)
|
||||||
|
#include <Cocoa_Window.hxx>
|
||||||
#else
|
#else
|
||||||
#include <QX11Info>
|
#include <QX11Info>
|
||||||
#include <GL/glx.h>
|
#include <GL/glx.h>
|
||||||
@ -53,7 +55,7 @@ View::View( Handle(AIS_InteractiveContext) theContext, QWidget* parent )
|
|||||||
: QWidget( parent ),
|
: QWidget( parent ),
|
||||||
myViewActions( 0 )
|
myViewActions( 0 )
|
||||||
{
|
{
|
||||||
#ifndef WNT
|
#if !defined(_WIN32) && !defined(__WIN32__) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX))
|
||||||
//XSynchronize( x11Display(),true ); // it is possible to use QApplication::syncX();
|
//XSynchronize( x11Display(),true ); // it is possible to use QApplication::syncX();
|
||||||
XSynchronize( x11Info().display(),true ); // it is possible to use QApplication::syncX();
|
XSynchronize( x11Info().display(),true ); // it is possible to use QApplication::syncX();
|
||||||
#endif
|
#endif
|
||||||
@ -70,7 +72,7 @@ myViewActions( 0 )
|
|||||||
setAttribute(Qt::WA_PaintOnScreen);
|
setAttribute(Qt::WA_PaintOnScreen);
|
||||||
setAttribute(Qt::WA_NoSystemBackground);
|
setAttribute(Qt::WA_NoSystemBackground);
|
||||||
|
|
||||||
#if !defined WNT
|
#if !defined(_WIN32) && !defined(__WIN32__) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX))
|
||||||
XVisualInfo* pVisualInfo;
|
XVisualInfo* pVisualInfo;
|
||||||
if ( x11Info().display() )
|
if ( x11Info().display() )
|
||||||
{
|
{
|
||||||
@ -163,18 +165,24 @@ void View::init()
|
|||||||
{
|
{
|
||||||
if (myView.IsNull())
|
if (myView.IsNull())
|
||||||
myView = myContext->CurrentViewer()->CreateView();
|
myView = myContext->CurrentViewer()->CreateView();
|
||||||
int windowHandle = (int) winId();
|
#if defined(_WIN32) || defined(__WIN32__)
|
||||||
short hi, lo;
|
Aspect_Handle aWindowHandle = (Aspect_Handle )winId();
|
||||||
lo = (short) windowHandle;
|
Handle(WNT_Window) hWnd = new WNT_Window (Handle(Graphic3d_WNTGraphicDevice)::DownCast (myContext->CurrentViewer()->Device()),
|
||||||
hi = (short) (windowHandle >> 16);
|
aWindowHandle);
|
||||||
#ifdef WNT
|
#elif defined(__APPLE__) && !defined(MACOSX_USE_GLX)
|
||||||
Handle(WNT_Window) hWnd = new WNT_Window(Handle(Graphic3d_WNTGraphicDevice)::DownCast(myContext->CurrentViewer()->Device()),(int) hi,(int) lo);
|
NSView* aViewHandle = (NSView* )winId();
|
||||||
|
Handle(Cocoa_Window) hWnd = new Cocoa_Window (aViewHandle);
|
||||||
#else
|
#else
|
||||||
Handle(Xw_Window) hWnd = new Xw_Window(Handle(Graphic3d_GraphicDevice)::DownCast(myContext->CurrentViewer()->Device()),(int) hi,(int) lo,Xw_WQ_SAMEQUALITY);
|
Aspect_Handle aWindowHandle = (Aspect_Handle )winId();
|
||||||
|
Handle(Xw_Window) hWnd = new Xw_Window (Handle(Graphic3d_GraphicDevice)::DownCast (myContext->CurrentViewer()->Device()),
|
||||||
|
aWindowHandle,
|
||||||
|
Xw_WQ_SAMEQUALITY);
|
||||||
#endif // WNT
|
#endif // WNT
|
||||||
myView->SetWindow (hWnd);
|
myView->SetWindow (hWnd);
|
||||||
if (!hWnd->IsMapped())
|
if (!hWnd->IsMapped())
|
||||||
|
{
|
||||||
hWnd->Map();
|
hWnd->Map();
|
||||||
|
}
|
||||||
myView->SetBackgroundColor (Quantity_NOC_BLACK);
|
myView->SetBackgroundColor (Quantity_NOC_BLACK);
|
||||||
myView->MustBeResized();
|
myView->MustBeResized();
|
||||||
}
|
}
|
||||||
|
@ -30,9 +30,13 @@ unix {
|
|||||||
OBJECTS_DIR = ./$$UNAME/obj
|
OBJECTS_DIR = ./$$UNAME/obj
|
||||||
MOC_DIR = ./$$UNAME/src
|
MOC_DIR = ./$$UNAME/src
|
||||||
}
|
}
|
||||||
INCLUDEPATH += $$QMAKE_INCDIR_X11 $$QMAKE_INCDIR_OPENGL $$QMAKE_INCDIR_THREAD
|
|
||||||
DEFINES += LIN LININTEL OCC_CONVERT_SIGNALS HAVE_CONFIG_H HAVE_WOK_CONFIG_H QT_NO_STL
|
MACOSX_USE_GLX = $$(MACOSX_USE_GLX)
|
||||||
LIBS += -L$$QMAKE_LIBDIR_X11 $$QMAKE_LIBS_X11 -L$$QMAKE_LIBDIR_OPENGL $$QMAKE_LIBS_OPENGL $$QMAKE_LIBS_THREAD
|
|
||||||
|
!macx | equals(MACOSX_USE_GLX, true): INCLUDEPATH += $$QMAKE_INCDIR_X11 $$QMAKE_INCDIR_OPENGL $$QMAKE_INCDIR_THREAD
|
||||||
|
!macx | equals(MACOSX_USE_GLX, true): DEFINES += LIN LININTEL
|
||||||
|
DEFINES += OCC_CONVERT_SIGNALS HAVE_CONFIG_H HAVE_WOK_CONFIG_H QT_NO_STL
|
||||||
|
!macx | equals(MACOSX_USE_GLX, true): LIBS += -L$$QMAKE_LIBDIR_X11 $$QMAKE_LIBS_X11 -L$$QMAKE_LIBDIR_OPENGL $$QMAKE_LIBS_OPENGL $$QMAKE_LIBS_THREAD
|
||||||
LIBS += -lfreeimageplus
|
LIBS += -lfreeimageplus
|
||||||
LIBS += -ltbb -ltbbmalloc
|
LIBS += -ltbb -ltbbmalloc
|
||||||
}
|
}
|
||||||
|
2
samples/qt/IESample/make.sh
Normal file → Executable file
2
samples/qt/IESample/make.sh
Normal file → Executable file
@ -4,4 +4,6 @@ export aSamplePath="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|||||||
if [ -e "${aSamplePath}/env.sh" ]; then source "${aSamplePath}/env.sh"; fi
|
if [ -e "${aSamplePath}/env.sh" ]; then source "${aSamplePath}/env.sh"; fi
|
||||||
cd $aSamplePath
|
cd $aSamplePath
|
||||||
qmake IESample.pro
|
qmake IESample.pro
|
||||||
|
if test `uname -s` != "Darwin"; then
|
||||||
make
|
make
|
||||||
|
fi
|
||||||
|
@ -8,7 +8,17 @@ host=`uname -s`
|
|||||||
STATION=$host
|
STATION=$host
|
||||||
|
|
||||||
RES_DIR="${aSamplePath}/res"
|
RES_DIR="${aSamplePath}/res"
|
||||||
BIN_DIR="${aSamplePath}/${STATION}/bin"
|
|
||||||
|
aSystem=`uname -s`
|
||||||
|
if [ "$aSystem" == "Darwin" ]; then
|
||||||
|
if [ "${CASDEB}" == "d" ]; then
|
||||||
|
BIN_DIR="${aSamplePath}/build/Debug/IESample.app/Contents/MacOS"
|
||||||
|
else
|
||||||
|
BIN_DIR="${aSamplePath}/build/Release/IESample.app/Contents/MacOS"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
BIN_DIR="${aSamplePath}/${STATION}/bin${CASDEB}"
|
||||||
|
fi
|
||||||
|
|
||||||
CSF_ResourcesDefaults="${RES_DIR}"
|
CSF_ResourcesDefaults="${RES_DIR}"
|
||||||
CSF_IEResourcesDefaults="${RES_DIR}"
|
CSF_IEResourcesDefaults="${RES_DIR}"
|
||||||
@ -20,7 +30,11 @@ export PATH
|
|||||||
|
|
||||||
if test ! -r "${BIN_DIR}/IESample"; then
|
if test ! -r "${BIN_DIR}/IESample"; then
|
||||||
echo "Executable \"${BIN_DIR}/IESample\" not found."
|
echo "Executable \"${BIN_DIR}/IESample\" not found."
|
||||||
|
if [ "$aSystem" == "Darwin" ]; then
|
||||||
|
echo "Probably you don't compile the application. Build it with Xcode."
|
||||||
|
else
|
||||||
echo "Probably you don't compile the application. Execute \"make\"."
|
echo "Probably you don't compile the application. Execute \"make\"."
|
||||||
|
fi
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -32,9 +32,13 @@ unix {
|
|||||||
OBJECTS_DIR = ./$$UNAME/obj
|
OBJECTS_DIR = ./$$UNAME/obj
|
||||||
MOC_DIR = ./$$UNAME/src
|
MOC_DIR = ./$$UNAME/src
|
||||||
}
|
}
|
||||||
INCLUDEPATH += $$QMAKE_INCDIR_X11 $$QMAKE_INCDIR_OPENGL $$QMAKE_INCDIR_THREAD
|
|
||||||
DEFINES += LIN LININTEL OCC_CONVERT_SIGNALS HAVE_CONFIG_H HAVE_WOK_CONFIG_H
|
MACOSX_USE_GLX = $$(MACOSX_USE_GLX)
|
||||||
LIBS += -L$$QMAKE_LIBDIR_X11 $$QMAKE_LIBS_X11 -L$$QMAKE_LIBDIR_OPENGL $$QMAKE_LIBS_OPENGL $$QMAKE_LIBS_THREAD
|
|
||||||
|
!macx | equals(MACOSX_USE_GLX, true): INCLUDEPATH += $$QMAKE_INCDIR_X11 $$QMAKE_INCDIR_OPENGL $$QMAKE_INCDIR_THREAD
|
||||||
|
!macx | equals(MACOSX_USE_GLX, true): DEFINES += LIN LININTEL
|
||||||
|
DEFINES += OCC_CONVERT_SIGNALS HAVE_CONFIG_H HAVE_WOK_CONFIG_H QT_NO_STL
|
||||||
|
!macx | equals(MACOSX_USE_GLX, true): LIBS += -L$$QMAKE_LIBDIR_X11 $$QMAKE_LIBS_X11 -L$$QMAKE_LIBDIR_OPENGL $$QMAKE_LIBS_OPENGL $$QMAKE_LIBS_THREAD
|
||||||
LIBS += -lfreeimageplus
|
LIBS += -lfreeimageplus
|
||||||
LIBS += -ltbb -ltbbmalloc
|
LIBS += -ltbb -ltbbmalloc
|
||||||
}
|
}
|
||||||
|
@ -4,4 +4,6 @@ export aSamplePath="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|||||||
if [ -e "${aSamplePath}/env.sh" ]; then source "${aSamplePath}/env.sh"; fi
|
if [ -e "${aSamplePath}/env.sh" ]; then source "${aSamplePath}/env.sh"; fi
|
||||||
cd $aSamplePath
|
cd $aSamplePath
|
||||||
qmake Tutorial.pro
|
qmake Tutorial.pro
|
||||||
|
if test `uname -s` != "Darwin"; then
|
||||||
make
|
make
|
||||||
|
fi
|
||||||
|
@ -8,7 +8,17 @@ host=`uname -s`
|
|||||||
STATION=$host
|
STATION=$host
|
||||||
|
|
||||||
RES_DIR="${aSamplePath}/res"
|
RES_DIR="${aSamplePath}/res"
|
||||||
BIN_DIR="${aSamplePath}/${STATION}/bin"
|
|
||||||
|
aSystem=`uname -s`
|
||||||
|
if [ "$aSystem" == "Darwin" ]; then
|
||||||
|
if [ "${CASDEB}" == "d" ]; then
|
||||||
|
BIN_DIR="${aSamplePath}/build/Debug/Tutorial.app/Contents/MacOS"
|
||||||
|
else
|
||||||
|
BIN_DIR="${aSamplePath}/build/Release/Tutorial.app/Contents/MacOS"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
BIN_DIR="${aSamplePath}/${STATION}/bin${CASDEB}"
|
||||||
|
fi
|
||||||
|
|
||||||
CSF_ResourcesDefaults="${RES_DIR}"
|
CSF_ResourcesDefaults="${RES_DIR}"
|
||||||
CSF_TutorialResourcesDefaults="${RES_DIR}"
|
CSF_TutorialResourcesDefaults="${RES_DIR}"
|
||||||
@ -20,7 +30,11 @@ export PATH
|
|||||||
|
|
||||||
if test ! -r "${BIN_DIR}/Tutorial"; then
|
if test ! -r "${BIN_DIR}/Tutorial"; then
|
||||||
echo "Executable \"${BIN_DIR}/Tutorial\" not found."
|
echo "Executable \"${BIN_DIR}/Tutorial\" not found."
|
||||||
|
if [ "$aSystem" == "Darwin" ]; then
|
||||||
|
echo "Probably you don't compile the application. Build it with Xcode."
|
||||||
|
else
|
||||||
echo "Probably you don't compile the application. Execute \"make\"."
|
echo "Probably you don't compile the application. Execute \"make\"."
|
||||||
|
fi
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user