-// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
#include <QDesktopWidget>
#include <AIS_Axis.hxx>
-#include <AIS_Drawer.hxx>
+#if OCC_VERSION_LARGE > 0x06080000
+ #include <Prs3d_Drawer.hxx>
+#else
+ #include <AIS_Drawer.hxx>
+#endif
#include <AIS_ListOfInteractive.hxx>
#include <AIS_ListIteratorOfListOfInteractive.hxx>
//myTrihedron->SetColor( Col );
myTrihedron->SetArrowColor( Col.Name() );
myTrihedron->SetSize(100);
- Handle(AIS_Drawer) drawer = myTrihedron->Attributes();
- if (drawer->HasDatumAspect()) {
+#if OCC_VERSION_LARGE > 0x06080000
+ Handle(Prs3d_Drawer) drawer = myTrihedron->Attributes();
+ if (drawer->HasOwnDatumAspect()) {
+#else
+ Handle(AIS_Drawer) drawer = myTrihedron->Attributes();
+ if (drawer->HasDatumAspect()) {
+#endif
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));
myClippingColor = QColor( 50, 50, 50 );
myDefaultTextureUsed = true;
myClippingTexture = QString();
+ myTextureModulated = true;
+ myClippingTextureScale = 1.0;
}
}
// initialize a texture for clipped region
-Handle(Graphic3d_Texture2Dmanual) initClippingTexture( const bool isDefault, const QString& theTexture)
+Handle(Graphic3d_Texture2Dmanual) initClippingTexture( const bool isDefault, const QString& theTexture,
+ const bool isModulate, const double theScale )
{
QString aTextureFile = isDefault ? ":images/hatch.png" : theTexture;
QPixmap px( aTextureFile );
Handle(Graphic3d_Texture2Dmanual) aTexture = new Graphic3d_Texture2Dmanual( aPixmap );
if( aTexture->IsDone() ) {
aTexture->EnableRepeat();
- if( isDefault ) {
- aTexture->EnableModulate();
- aTexture->GetParams()->SetScale( Graphic3d_Vec2( 0.01, 0.01 ) );
- }
- else {
- aTexture->DisableModulate();
- aTexture->GetParams()->SetScale( Graphic3d_Vec2( 0.005, 0.005 ) );
- }
+ isModulate ? aTexture->EnableModulate() : aTexture->DisableModulate();
+ aTexture->GetParams()->SetScale( Graphic3d_Vec2( 1/( theScale*100 ), -1 / ( theScale*100 ) ) );
}
return aTexture;
}
/*!
- Sets default texture enabled status
- \param isUsed - new status
+ Sets default texture parameters
+ \param isDefault - use/non-use default texture
+ \param theTexture - new texture of the clipped region
+ \param isModulate - enable/disable texture modulate mode
+ \param theScale - scale factor.
*/
-void OCCViewer_Viewer::useDefaultTexture( const bool isUsed )
+void OCCViewer_Viewer::setClippingTextureParams( const bool isDefault, const QString& theTexture,
+ const bool isModulate, const double theScale )
{
- myDefaultTextureUsed = isUsed;
+ myDefaultTextureUsed = isDefault;
+ myClippingTexture = theTexture;
+ myTextureModulated = isModulate;
+ myClippingTextureScale = theScale;
if( myInternalClipPlanes.IsEmpty() )
return;
Handle(Graphic3d_Texture2Dmanual) aTexture =
- initClippingTexture( myDefaultTextureUsed, myClippingTexture );
+ initClippingTexture( myDefaultTextureUsed, myClippingTexture,
+ myTextureModulated, myClippingTextureScale );
for( int i = 1; i <= myInternalClipPlanes.Size(); i++ )
myInternalClipPlanes.Value(i)->SetCappingTexture( aTexture );
}
/*!
- Sets a texture of the clipped region
- \param theTexture - a new texture of the clipped region
+ \return clipping texture
*/
-void OCCViewer_Viewer::setClippingTexture( const QString& theTexture )
+QString OCCViewer_Viewer::clippingTexture() const
{
- myClippingTexture = theTexture;
-
- if( myInternalClipPlanes.IsEmpty() || myDefaultTextureUsed )
- return;
-
- Handle(Graphic3d_Texture2Dmanual) aTexture =
- initClippingTexture( myDefaultTextureUsed, myClippingTexture );
-
- for( int i = 1; i <= myInternalClipPlanes.Size(); i++ )
- myInternalClipPlanes.Value(i)->SetCappingTexture( aTexture );
+ return myClippingTexture;
+}
- update();
+/*!
+ \return true if texture is modulated
+*/
+bool OCCViewer_Viewer::isTextureModulated() const
+{
+ return myTextureModulated;
}
/*!
- \return clipping texture
+ \return scale factor of texture
*/
-QString OCCViewer_Viewer::clippingTexture() const
+double OCCViewer_Viewer::clippingTextureScale() const
{
- return myClippingTexture;
+ return myClippingTextureScale;
}
/*!
aGraphic3dPlane->SetCappingMaterial( aMaterialAspect );
// set capping texture
- aGraphic3dPlane->SetCappingTexture( initClippingTexture( myDefaultTextureUsed, myClippingTexture) );
+ aGraphic3dPlane->SetCappingTexture( initClippingTexture( myDefaultTextureUsed, myClippingTexture,
+ myTextureModulated, myClippingTextureScale ) );
return aGraphic3dPlane;
}