-// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
#include <V3d_Viewer.hxx>
#include <V3d_View.hxx>
-#include <Basics_OCCTVersion.hxx>
-
-#if OCC_VERSION_LARGE > 0x06050500
-
-//
-// new code, changed in OCCT v6.6.0
-//
-
+#include <OpenGl_GraphicDriver.hxx>
#include <Aspect_DisplayConnection.hxx>
-#include <Graphic3d.hxx>
-#include <Graphic3d_GraphicDriver.hxx>
-#ifdef WNT
-#include <WNT_Window.hxx>
-#else
-#include <Xw_Window.hxx>
-#endif
-
-#else // #if OCC_VERSION_LARGE > 0x06050500
-
-//
-// obsolete code (before OCCT v6.6.0); to be removed
-//
-#ifdef WNT
+#if defined(WIN32)
#include <WNT_Window.hxx>
-#include <Graphic3d_WNTGraphicDevice.hxx>
+#elif defined(__APPLE__)
+#include <Cocoa_Window.hxx>
#else
#include <Xw_Window.hxx>
-#include <Graphic3d_GraphicDevice.hxx>
#endif
-#endif // #if OCC_VERSION_LARGE > 0x06050500
+#include <Basics_OCCTVersion.hxx>
/*!
Create native view window for CasCade view [ static ]
Handle(Aspect_Window) OCCViewer_VService::CreateWindow( const Handle(V3d_View)& view,
WId winId )
{
-#if OCC_VERSION_LARGE > 0x06050500
-
-//
-// new code, changed in OCCT v6.6.0
-//
+#if OCC_VERSION_LARGE < 0x07070000
Aspect_Handle aWindowHandle = (Aspect_Handle)winId;
-#ifdef WNT
- Handle(WNT_Window) viewWindow = new WNT_Window( aWindowHandle );
#else
- Handle(Aspect_DisplayConnection) aDispConnection = view->Viewer()->Driver()->GetDisplayConnection();
- Handle(Xw_Window) viewWindow = new Xw_Window( aDispConnection, aWindowHandle );
+ Aspect_Drawable aWindowHandle = (Aspect_Drawable)winId;
#endif
- return viewWindow;
-
-#else // #if OCC_VERSION_LARGE > 0x06050500
-
-//
-// obsolete code (before OCCT v6.6.0); to be removed
-//
- int hwnd = (int)winId;
- short lowin = (short)hwnd;
- short hiwin = (short)( hwnd >> 16 );
-#ifdef WNT
- Handle(WNT_Window) viewWindow = new WNT_Window( Handle(Graphic3d_WNTGraphicDevice)::DownCast(view->Viewer()->Device()), hiwin, lowin );
- // Prevent flickering
- viewWindow->SetFlags( WDF_NOERASEBKGRND );
+#if defined(WIN32)
+ Handle(WNT_Window) viewWindow = new WNT_Window( aWindowHandle );
+#elif defined(__APPLE__)
+ Handle(Cocoa_Window) viewWindow = new Cocoa_Window( (NSView*)winId );
#else
- Handle(Xw_Window) viewWindow = new Xw_Window( Handle(Graphic3d_GraphicDevice)::DownCast(view->Viewer()->Device()), hiwin, lowin, Xw_WQ_SAMEQUALITY );
+ Handle(Aspect_DisplayConnection) aDispConnection = view->Viewer()->Driver()->GetDisplayConnection();
+ Handle(Xw_Window) viewWindow = new Xw_Window( aDispConnection, aWindowHandle );
#endif
return viewWindow;
-
-#endif // #if OCC_VERSION_LARGE > 0x06050500
}
-/*!
- Maps CasCade view to the window [ static ]
-*/
-// void OCCViewer_VService::SetWindow( const Handle(V3d_View)& view,
-// const Standard_Integer hiwin,
-// const Standard_Integer lowin,
-// const Xw_WindowQuality quality )
-// {
-// view->SetWindow( OCCViewer_VService::CreateWindow( view, hiwin, lowin, quality ) );
-// }
-
-/*!
- Magnifies 'view' based on previous view [ static ]
-*/
-// void OCCViewer_VService::SetMagnify( const Handle(V3d_View)& view,
-// const Standard_Integer hiwin,
-// const Standard_Integer lowin,
-// const Handle(V3d_View)& prevView,
-// const Standard_Integer x1,
-// const Standard_Integer y1,
-// const Standard_Integer x2,
-// const Standard_Integer y2,
-// const Xw_WindowQuality aQuality )
-// {
-// #ifdef WNT
-// Handle(WNT_Window) w =
-// new WNT_Window( Handle(Graphic3d_WNTGraphicDevice)::DownCast(view->Viewer()->Device()), hiwin, lowin );
-// #else
-// Handle(Xw_Window) w =
-// new Xw_Window( Handle(Graphic3d_GraphicDevice)::DownCast(view->Viewer()->Device()), hiwin, lowin, aQuality );
-// #endif
-// view->SetMagnify( w, prevView, x1, y1, x2, y2 );
-// }
-
/*!
Creates viewer 3d [ static ]
*/
-Handle(V3d_Viewer) OCCViewer_VService::Viewer3d( const Standard_CString aDisplay,
- const Standard_ExtString aName,
- const Standard_CString aDomain,
- const Standard_Real ViewSize ,
- const V3d_TypeOfOrientation ViewProj,
- const Standard_Boolean ComputedMode,
- const Standard_Boolean aDefaultComputedMode )
+Handle(V3d_Viewer) OCCViewer_VService::CreateViewer()
{
-#if OCC_VERSION_LARGE > 0x06050500
-
-//
-// new code, changed in OCCT v6.6.0
-//
-
- static Handle(Graphic3d_GraphicDriver) aGraphicDriver;
- if (aGraphicDriver.IsNull())
- {
- Handle(Aspect_DisplayConnection) aDisplayConnection;
-#ifndef WNT
- aDisplayConnection = new Aspect_DisplayConnection( aDisplay );
-#endif
- aGraphicDriver = Graphic3d::InitGraphicDriver( aDisplayConnection );
- }
-
- return new V3d_Viewer( aGraphicDriver, aName, aDomain, ViewSize, ViewProj,
- Quantity_NOC_GRAY30, V3d_ZBUFFER, V3d_GOURAUD, V3d_WAIT,
- ComputedMode, aDefaultComputedMode, V3d_TEX_NONE );
-
-#else // #if OCC_VERSION_LARGE > 0x06050500
-
-//
-// obsolete code (before OCCT v6.6.0); to be removed
-//
-
-#ifndef WNT
- static Handle(Graphic3d_GraphicDevice) defaultdevice;
- if ( defaultdevice.IsNull() )
- defaultdevice = new Graphic3d_GraphicDevice( aDisplay );
- return new V3d_Viewer( defaultdevice, aName, aDomain, ViewSize, ViewProj,
- Quantity_NOC_GRAY30, V3d_ZBUFFER, V3d_GOURAUD, V3d_WAIT,
- ComputedMode, aDefaultComputedMode, V3d_TEX_NONE );
-#else
- static Handle(Graphic3d_WNTGraphicDevice) defaultdevice;
- if ( defaultdevice.IsNull() )
- defaultdevice = new Graphic3d_WNTGraphicDevice();
- return new V3d_Viewer( defaultdevice, aName, aDomain, ViewSize, ViewProj,
- Quantity_NOC_GRAY30, V3d_ZBUFFER, V3d_GOURAUD, V3d_WAIT,
- ComputedMode, aDefaultComputedMode, V3d_TEX_NONE);
-#endif // WNT
-
-#endif // #if OCC_VERSION_LARGE > 0x06050500
+ Handle(OpenGl_GraphicDriver) aGraphicDriver =
+ new OpenGl_GraphicDriver(new Aspect_DisplayConnection());
+ return new V3d_Viewer(aGraphicDriver);
}