#include "OCCViewer_VService.h"
#include "OCCViewer_ViewPort3d.h"
#include "OCCViewer_ClippingDlg.h"
+#include "OCCViewer_Utilities.h"
#include "SUIT_ViewWindow.h"
#include "SUIT_ViewManager.h"
#include <AIS_ListOfInteractive.hxx>
#include <AIS_ListIteratorOfListOfInteractive.hxx>
+#include <Graphic3d_Texture2Dmanual.hxx>
+#include <Graphic3d_TextureParams.hxx>
+
#include <Geom_Axis2Placement.hxx>
#include <Prs3d_Drawer.hxx>
#include <Prs3d_DatumAspect.hxx>
// selection
mySelectionEnabled = true;
myMultiSelectionEnabled = true;
-
-
- SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
- if(resMgr)
- myShowStaticTrihedron = resMgr->booleanValue( "3DViewer", "show_static_trihedron", true );
}
/*!
if ( vp3d )
{
vp3d->getView()->SetSurfaceDetail(V3d_TEX_ALL);
+ // connect signal from viewport
+ connect(vp3d, SIGNAL(vpClosed(OCCViewer_ViewPort3d*)), this, SLOT(onViewClosed(OCCViewer_ViewPort3d*)));
+ connect(vp3d, SIGNAL(vpMapped(OCCViewer_ViewPort3d*)), this, SLOT(onViewMapped(OCCViewer_ViewPort3d*)));
}
}
}
initView( vw );
// set default background for view window
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;
}
emit selectionChanged();
}
-void OCCViewer_Viewer::onViewClosed()
+void OCCViewer_Viewer::onViewClosed(OCCViewer_ViewPort3d*)
{
Standard_Integer aViewsNb = 0;
for ( myV3dViewer->InitActiveViews(); myV3dViewer->MoreActiveViews(); myV3dViewer->NextActiveViews())
}
}
-void OCCViewer_Viewer::onViewMapped()
+void OCCViewer_Viewer::onViewMapped(OCCViewer_ViewPort3d* viewPort)
{
setTrihedronShown( true );
+ bool showStaticTrihedron = true;
+ SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
+ if ( resMgr ) showStaticTrihedron = resMgr->booleanValue( "3DViewer", "show_static_trihedron", true );
+ viewPort->showStaticTrihedron( showStaticTrihedron );
}
int OCCViewer_Viewer::getTopLayerId()
*/
OCCViewer_ViewWindow* OCCViewer_Viewer::createSubWindow()
{
- return new OCCViewer_ViewWindow( 0, this);
+ return new OCCViewer_ViewWindow(0, this);
}
// obsolete
/*!
Set the show static trihedron flag
*/
-void OCCViewer_Viewer::setStaticTrihedronDisplayed(const bool on) {
- if(myShowStaticTrihedron != on) {
- OCCViewer_ViewWindow* aView = (OCCViewer_ViewWindow*)(myViewManager->getActiveView());
- if(!aView)
- return;
-
- OCCViewer_ViewPort3d* vp3d = aView->getViewPort();
- if(vp3d) {
- myShowStaticTrihedron = on;
- vp3d->updateStaticTriedronVisibility();
- }
- }
+void OCCViewer_Viewer::setStaticTrihedronDisplayed(const bool on)
+{
+ OCCViewer_ViewWindow* aView = (OCCViewer_ViewWindow*)(myViewManager->getActiveView());
+ if ( aView ) aView->showStaticTrihedron( on );
}
/*!
}
}
-
+/*!
+ Creates clipping plane based on the incoming plane
+*/
+Handle(Graphic3d_ClipPlane) OCCViewer_Viewer::createClipPlane(const gp_Pln& thePlane, const Standard_Boolean theIsOn)
+{
+ Handle(Graphic3d_ClipPlane) aGraphic3dPlane = new Graphic3d_ClipPlane( thePlane );
+ aGraphic3dPlane->SetOn( theIsOn );
+ aGraphic3dPlane->SetCapping( Standard_True );
+
+ // load capping texture
+ QPixmap px( ":images/hatch.png" );
+ if( !px.isNull() ) {
+ const Handle(Image_PixMap) aPixmap = imageToPixmap( px.toImage() );
+ Handle(Graphic3d_Texture2Dmanual) aTexture = new Graphic3d_Texture2Dmanual( aPixmap );
+ if( aTexture->IsDone() ) {
+ aTexture->EnableModulate();
+ aTexture->EnableRepeat();
+ aTexture->GetParams()->SetScale( Graphic3d_Vec2( 0.01, 0.01 ) );
+ aGraphic3dPlane->SetCappingTexture( aTexture );
+ }
+ }
+ return aGraphic3dPlane;
+}
/*!
Applies clipping planes to clippable objects
*/
gp_Pnt anOrigin( aPlane.X, aPlane.Y, aPlane.Z );
gp_Dir aDirection( aDx, aDy, aDz );
- Handle(Graphic3d_ClipPlane) aGraphic3dPlane = new Graphic3d_ClipPlane( gp_Pln( anOrigin, aDirection ) );
- aGraphic3dPlane->SetOn( aPlane.IsOn );
-
- myInternalClipPlanes.Append( aGraphic3dPlane );
+ myInternalClipPlanes.Append( createClipPlane( gp_Pln( anOrigin, aDirection ), aPlane.IsOn ) );
myClipPlanes.push_back( aPlane );
}