#include <V3d_Viewer.hxx>
#include <V3d_View.hxx>
+#include <Basics_OCCTVersion.hxx>
+
+#if OCC_VERSION_LARGE > 0x06050400
+#error OCC_VERSION_LARGE
+
+//
+// new code, changed in OCCT v6.6.0
+//
+
+#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 > 0x06050400
+
+//
+// obsolete code (before OCCT v6.6.0); to be removed
+//
+
#ifdef WNT
#include <WNT_Window.hxx>
#include <Graphic3d_WNTGraphicDevice.hxx>
#include <Graphic3d_GraphicDevice.hxx>
#endif
+#endif // #if OCC_VERSION_LARGE > 0x06050400
+
/*!
Create native view window for CasCade view [ static ]
*/
Handle(Aspect_Window) OCCViewer_VService::CreateWindow( const Handle(V3d_View)& view,
- const Standard_Integer hiwin,
- const Standard_Integer lowin,
- const Xw_WindowQuality quality )
+ WId winId )
{
+#if OCC_VERSION_LARGE > 0x06050400
+
+//
+// new code, changed in OCCT v6.6.0
+//
+ 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 );
+#endif
+ return viewWindow;
+
+#else // #if OCC_VERSION_LARGE > 0x06050400
+
+//
+// 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 );
#else
- Handle(Xw_Window) viewWindow = new Xw_Window( Handle(Graphic3d_GraphicDevice)::DownCast(view->Viewer()->Device()), hiwin, lowin, quality );
+ Handle(Xw_Window) viewWindow = new Xw_Window( Handle(Graphic3d_GraphicDevice)::DownCast(view->Viewer()->Device()), hiwin, lowin, Xw_WQ_SAMEQUALITY );
#endif
return viewWindow;
+
+#endif // #if OCC_VERSION_LARGE > 0x06050400
}
/*!
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 ) );
-}
+// 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 );
-}
+// 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 ]
const Standard_Boolean ComputedMode,
const Standard_Boolean aDefaultComputedMode )
{
+#if OCC_VERSION_LARGE > 0x06050400
+
+//
+// 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 > 0x06050400
+
+//
+// obsolete code (before OCCT v6.6.0); to be removed
+//
+
#ifndef WNT
static Handle(Graphic3d_GraphicDevice) defaultdevice;
if ( defaultdevice.IsNull() )
Quantity_NOC_GRAY30, V3d_ZBUFFER, V3d_GOURAUD, V3d_WAIT,
ComputedMode, aDefaultComputedMode, V3d_TEX_NONE);
#endif // WNT
+
+#endif // #if OCC_VERSION_LARGE > 0x06050400
}
#include <Standard_Boolean.hxx>
#include <Standard_CString.hxx>
#include <Standard_ExtString.hxx>
-#include <Standard_Integer.hxx>
+//#include <Standard_Integer.hxx>
#include <Quantity_Length.hxx>
-#include <Xw_WindowQuality.hxx>
+//#include <Xw_WindowQuality.hxx>
#include <V3d_TypeOfOrientation.hxx>
+#include <QWidget>
+
class Standard_EXPORT OCCViewer_VService
{
public:
- inline void* operator new(size_t,void* anAddress)
- {
- return anAddress;
- }
- inline void* operator new(size_t size)
- {
- return Standard::Allocate(size);
- }
- inline void operator delete(void *anAddress)
- {
- if ( anAddress ) Standard::Free((Standard_Address&)anAddress);
- }
-
- // STATIC METHODS
- static Handle(Aspect_Window)
- CreateWindow( const Handle(V3d_View)& view,
- const Standard_Integer hiwin,
- const Standard_Integer lowin,
- const Xw_WindowQuality quality );
+ // STATIC METHODS
+ static Handle(Aspect_Window) CreateWindow( const Handle(V3d_View)& view, WId id );
+ /*
static void SetWindow( const Handle( V3d_View )& view,
const Standard_Integer hiwin,
const Standard_Integer lowin,
const Standard_Integer x2,
const Standard_Integer y2,
const Xw_WindowQuality quality = Xw_WQ_3DQUALITY );
- static Handle_V3d_Viewer
- Viewer3d( const Standard_CString display,
- const Standard_ExtString name,
- const Standard_CString domain = "",
- const Quantity_Length ViewSize = 1000.0,
- const V3d_TypeOfOrientation ViewProj = V3d_XposYnegZpos,
- const Standard_Boolean ComputedMode = Standard_True,
- const Standard_Boolean DefaultComputedMode = Standard_True );
+ */
+
+ static Handle(V3d_Viewer) Viewer3d( const Standard_CString display,
+ const Standard_ExtString name,
+ const Standard_CString domain = "",
+ const Quantity_Length ViewSize = 1000.0,
+ const V3d_TypeOfOrientation ViewProj = V3d_XposYnegZpos,
+ const Standard_Boolean ComputedMode = Standard_True,
+ const Standard_Boolean DefaultComputedMode = Standard_True );
};
#endif