X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FOCCViewer%2FOCCViewer_ViewModel.cxx;h=d7eae71b8e218e1880be08f8efc94bb9277f26d6;hb=e6caa123c65e3c4a3017364ec5bb4225fd898465;hp=9f4e6f761ab68b6dbda58443861dcd6be61daf78;hpb=782de26fa93b9fb5edc9854cdda4a77b03c92175;p=modules%2Fgui.git diff --git a/src/OCCViewer/OCCViewer_ViewModel.cxx b/src/OCCViewer/OCCViewer_ViewModel.cxx index 9f4e6f761..d7eae71b8 100755 --- a/src/OCCViewer/OCCViewer_ViewModel.cxx +++ b/src/OCCViewer/OCCViewer_ViewModel.cxx @@ -1,4 +1,4 @@ -// 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 @@ -53,7 +53,11 @@ #include #include -#include +#if OCC_VERSION_LARGE > 0x06080000 + #include +#else + #include +#endif #include #include @@ -121,8 +125,13 @@ OCCViewer_Viewer::OCCViewer_Viewer( bool DisplayTrihedron) //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)); @@ -147,6 +156,8 @@ OCCViewer_Viewer::OCCViewer_Viewer( bool DisplayTrihedron) myClippingColor = QColor( 50, 50, 50 ); myDefaultTextureUsed = true; myClippingTexture = QString(); + myTextureModulated = true; + myClippingTextureScale = 1.0; } @@ -609,7 +620,8 @@ QColor OCCViewer_Viewer::clippingColor() const } // 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 ); @@ -617,31 +629,33 @@ Handle(Graphic3d_Texture2Dmanual) initClippingTexture( const bool isDefault, con 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 ); @@ -658,31 +672,27 @@ bool OCCViewer_Viewer::isDefaultTextureUsed() const } /*! - 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; } /*! @@ -1171,7 +1181,8 @@ Handle(Graphic3d_ClipPlane) OCCViewer_Viewer::createClipPlane(const gp_Pln& theP aGraphic3dPlane->SetCappingMaterial( aMaterialAspect ); // set capping texture - aGraphic3dPlane->SetCappingTexture( initClippingTexture( myDefaultTextureUsed, myClippingTexture) ); + aGraphic3dPlane->SetCappingTexture( initClippingTexture( myDefaultTextureUsed, myClippingTexture, + myTextureModulated, myClippingTextureScale ) ); return aGraphic3dPlane; }