#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 <Aspect_DisplayConnection.hxx>
#include <Graphic3d.hxx>
#include <Graphic3d_GraphicDriver.hxx>
#include <Xw_Window.hxx>
#endif
-#else // #if OCC_VERSION_LARGE > 0x06050500
-
-//
-// obsolete code (before OCCT v6.6.0); to be removed
-//
-
-#ifdef WNT
-#include <WNT_Window.hxx>
-#include <Graphic3d_WNTGraphicDevice.hxx>
-#else
-#include <Xw_Window.hxx>
-#include <Graphic3d_GraphicDevice.hxx>
-#endif
-
-#endif // #if OCC_VERSION_LARGE > 0x06050500
-
/*!
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
-//
Aspect_Handle aWindowHandle = (Aspect_Handle)winId;
#ifdef WNT
Handle(WNT_Window) viewWindow = new WNT_Window( aWindowHandle );
Handle(Xw_Window) viewWindow = new Xw_Window( aDispConnection, aWindowHandle );
#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 );
-#else
- 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 > 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( const Standard_ExtString name,
+ const Standard_CString displayName,
+ const Standard_CString domain,
+ const Standard_Real viewSize ,
+ const V3d_TypeOfOrientation viewProjection,
+ const Standard_Boolean computedMode,
+ const Standard_Boolean defaultComputedMode )
{
-#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 );
+ aDisplayConnection = new Aspect_DisplayConnection( displayName );
+#else
+ aDisplayConnection = new Aspect_DisplayConnection();
#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,
+ return new V3d_Viewer( aGraphicDriver, name, domain, viewSize, viewProjection,
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
+ computedMode, defaultComputedMode, V3d_TEX_NONE );
}
#include <Standard_Boolean.hxx>
#include <Standard_CString.hxx>
#include <Standard_ExtString.hxx>
-//#include <Standard_Integer.hxx>
#include <Quantity_Length.hxx>
-//#include <Xw_WindowQuality.hxx>
#include <V3d_TypeOfOrientation.hxx>
#include <QWidget>
class Standard_EXPORT OCCViewer_VService
{
public:
- // 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 Xw_WindowQuality quality = Xw_WQ_3DQUALITY );
+ static Handle(Aspect_Window) CreateWindow( const Handle(V3d_View)&, WId );
- static void SetMagnify( const Handle( V3d_View)& view,
- const Standard_Integer hiwin,
- const Standard_Integer lowin,
- const Handle( V3d_View)& aPreviousView,
- const Standard_Integer x1,
- const Standard_Integer y1,
- 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) CreateViewer( const Standard_ExtString,
+ const Standard_CString = "",
+ const Standard_CString = "",
+ const Quantity_Length = 1000.0,
+ const V3d_TypeOfOrientation = V3d_XposYnegZpos,
+ const Standard_Boolean = Standard_True,
+ const Standard_Boolean = Standard_True );
};
#endif
myTrihedronSize(100)
{
// init CasCade viewers
- myV3dViewer = OCCViewer_VService::Viewer3d( "", (short*) "Viewer3d", "", 1000.,
- V3d_XposYnegZpos, true, true );
-
+ myV3dViewer = OCCViewer_VService::CreateViewer( TCollection_ExtendedString("Viewer3d").ToExtString() );
myV3dViewer->Init();
-
- myV3dCollector = OCCViewer_VService::Viewer3d( "", (short*) "Collector3d", "", 1000.,
- V3d_XposYnegZpos, true, true );
+ myV3dCollector = OCCViewer_VService::CreateViewer( TCollection_ExtendedString("Collector3d").ToExtString() );
myV3dCollector->Init();
// init selector
- myAISContext = new AIS_InteractiveContext( myV3dViewer, myV3dCollector);
+ myAISContext = new AIS_InteractiveContext( myV3dViewer, myV3dCollector );
myAISContext->SelectionColor( Quantity_NOC_WHITE );
// display isoline on planar faces (box for ex.)
myAISContext->IsoOnPlane( true );
+ /*
double h = QApplication::desktop()->screenGeometry( QApplication::desktop()->primaryScreen() ).height() / 300. ;
Handle(Prs3d_Drawer) drawer = myAISContext->DefaultDrawer();
Handle(Prs3d_TextAspect) ta = drawer->TextAspect();
drawer->SetTextAspect(ta);
drawer->AngleAspect()->SetTextAspect(ta);
drawer->LengthAspect()->SetTextAspect(ta);
+ */
/* create trihedron */
- if( DisplayTrihedron )
+ if ( DisplayTrihedron )
{
Handle(Geom_Axis2Placement) anAxis = new Geom_Axis2Placement(gp::XOY());
myTrihedron = new AIS_Trihedron(anAxis);
myTrihedron->SetSize(100);
Handle(AIS_Drawer) drawer = myTrihedron->Attributes();
if (drawer->HasDatumAspect()) {
- Handle(Prs3d_DatumAspect) daspect = drawer->DatumAspect();
- daspect->FirstAxisAspect()->SetColor(Quantity_Color(1.0, 0.0, 0.0, Quantity_TOC_RGB));
- daspect->SecondAxisAspect()->SetColor(Quantity_Color(0.0, 1.0, 0.0, Quantity_TOC_RGB));
- daspect->ThirdAxisAspect()->SetColor(Quantity_Color(0.0, 0.0, 1.0, Quantity_TOC_RGB));
- }
-
- myAISContext->Display(myTrihedron);
- myAISContext->Deactivate(myTrihedron);
+ Handle(Prs3d_DatumAspect) daspect = drawer->DatumAspect();
+ daspect->FirstAxisAspect()->SetColor(Quantity_Color(1.0, 0.0, 0.0, Quantity_TOC_RGB));
+ daspect->SecondAxisAspect()->SetColor(Quantity_Color(0.0, 1.0, 0.0, Quantity_TOC_RGB));
+ daspect->ThirdAxisAspect()->SetColor(Quantity_Color(0.0, 0.0, 1.0, Quantity_TOC_RGB));
}
+ }
// set interaction style to standard
myInteractionStyle = 0;
vw->setBackground( background(0) ); // 0 means MAIN_VIEW (other views are not yet created here)
// connect signal from viewport
connect(view->getViewPort(), SIGNAL(vpClosed()), this, SLOT(onViewClosed()));
+ connect(view->getViewPort(), SIGNAL(vpMapped()), this, SLOT(onViewMapped()));
return view;
}
}
}
+void OCCViewer_Viewer::onViewMapped()
+{
+ setTrihedronShown( true );
+}
+
int OCCViewer_Viewer::getTopLayerId()
{
#if OCC_VERSION_LARGE > 0x06050200
if ( myTrihedron.IsNull() )
return;
- if ( on )
+ if ( on ) {
myAISContext->Display( myTrihedron );
- else
+ myAISContext->Deactivate(myTrihedron);
+ }
+ else {
myAISContext->Erase( myTrihedron );
+ }
}
/*!
* Update the size of the trihedron
*/
void OCCViewer_Viewer::updateTrihedron() {
+ if ( myTrihedron.IsNull() )
+ return;
+
if(myIsRelative){
double newSz, oldSz;