myWidth = -1;
myType = -1;
-
+ myTransparency = -1.0;
myToActivate = true;
// This parameter is used for activisation/deactivisation of objects to be displayed
AISShape->SetDisplayVectors( propMap.value( GEOM::propertyName( GEOM::EdgesDirection ) ).toBool() );
// set transparency
- AISShape->SetTransparency( propMap.value( GEOM::propertyName( GEOM::Transparency ) ).toDouble() );
+ if( HasTransparency() ) {
+ AISShape->SetTransparency( GetTransparency() );
+ } else {
+ AISShape->SetTransparency( propMap.value( GEOM::propertyName( GEOM::Transparency ) ).toDouble() );
+ }
// set iso properties
int uIsos = propMap.value( GEOM::propertyName( GEOM::NbIsos ) ).toString().split( GEOM::subSectionSeparator() )[0].toInt();
actor->SetEdgesInShadingColor( c.redF(), c.greenF(), c.blueF() );
// set opacity
- actor->SetOpacity( 1.0 - propMap.value( GEOM::propertyName( GEOM::Transparency ) ).toDouble() );
+ if( HasTransparency() ) {
+ actor->SetOpacity( 1.0 - GetTransparency() );
+ } else {
+ actor->SetOpacity( 1.0 - propMap.value( GEOM::propertyName( GEOM::Transparency ) ).toDouble() );
+ }
// set line width
actor->SetWidth( HasWidth() ?
myShadingColor = SalomeApp_Tools::color( col );
}
+//=================================================================
+/*!
+ * GEOM_Displayer::SetTransparency
+ * Set transparency for shape displaying.
+ */
+//=================================================================
+void GEOM_Displayer::SetTransparency( const double transparency )
+{
+ myTransparency = transparency;
+}
+
+double GEOM_Displayer::GetTransparency() const
+{
+ return myTransparency;
+}
+
+bool GEOM_Displayer::HasTransparency() const
+{
+ return myTransparency != -1.0;
+}
+
+void GEOM_Displayer::UnsetTransparency()
+{
+ myTransparency = -1.0;
+}
+
+
//=================================================================
/*!
* GEOM_Displayer::SetTexture
void UnsetColor();
int GetColor () const;
bool HasColor () const;
+
+ void SetTransparency ( const double );
+ void UnsetTransparency();
+ double GetTransparency () const;
+ bool HasTransparency () const;
/* Set texture for shape displaying. */
void SetTexture ( const std::string& );
bool myHasDisplayMode;
Aspect_TypeOfMarker myTypeOfMarker;
double myScaleOfMarker;
+ double myTransparency;
private:
SalomeApp_Application* myApp;
#include <LightApp_SelectionMgr.h>
#include <SalomeApp_Application.h>
#include <SalomeApp_Tools.h>
+#include <SalomeApp_Study.h>
#include <SUIT_MessageBox.h>
#include <SUIT_Session.h>
#include <SUIT_OverrideCursor.h>
#include <SUIT_Desktop.h>
#include <SUIT_ResourceMgr.h>
+#include <SUIT_ViewWindow.h>
+#include <SUIT_ViewManager.h>
#include <GEOMImpl_Types.hxx>
+#include <GEOM_Constants.h>
#include <TopTools_IndexedMapOfShape.hxx>
#include <TColStd_MapOfInteger.hxx>
TopExp::MapShapes( aSelShape, anIndices);
SALOME_Prs* aPrs = 0;
+ //Get object trancparency and set it to preview
+ SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
+ double transparency = 1.0;
+ if( app ) {
+ SUIT_ViewWindow* window = app->desktop( )->activeWindow( );
+ if( window && window->getViewManager() ) {
+ if ( app ) {
+ SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
+ if( aStudy ) {
+ int aMgrId = window->getViewManager()->getGlobalId();
+ CORBA::String_var aMainEntry = myObj->GetStudyEntry();
+ QString anEntry = aMainEntry.in();
+ QVariant v = aStudy->getObjectProperty( aMgrId , anEntry , GEOM::propertyName( GEOM::Transparency ) , transparency );
+ if( v.canConvert( QVariant::Double ) ) {
+ transparency = v.toDouble();
+ }
+ }
+ }
+ }
+ }
+
for ( int i = 0, n = aFaceLst->length(); i < n; i++ ) {
aFace = anIndices.FindKey( aFaceLst[i] );
try {
getDisplayer()->SetColor( Quantity_NOC_RED );
getDisplayer()->SetToActivate( false );
+ getDisplayer()->SetTransparency( transparency );
aPrs = !aFace.IsNull() ? getDisplayer()->BuildPrs( aFace ) : 0;
if ( aPrs )
displayPreview( aPrs, true );