-// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2016 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
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
{
mySelector = theSelector;
}
-
+
/*!
To map current selection to VTK representation
*/
}
myHighlightActor->SetVisibility( GetVisibility() && theIsHighlight );
}
+ myHighlightActor->SetMarkerEnabled( mySelectionMode == NodeSelection );
}
highlight(theIsHighlight);
SVTK_SelectionEvent* theSelectionEvent,
bool theIsHighlight)
{
- if ( !GetPickable() )
+ if ( !GetPickable() || !mySelector || !mySelector->IsPreSelectionEnabled() )
return false;
vtkRenderer *aRenderer = theInteractorStyle->GetCurrentRenderer();
SVTK_SelectionEvent* theSelectionEvent,
bool theIsHighlight)
{
- if ( !GetPickable() || !mySelector )
+ if ( !GetPickable() || !mySelector || !mySelector->IsSelectionEnabled() )
return false;
myOutlineActor->SetVisibility( false );
if ( !theIsHighlight )
return true;
- myHighlightActor->SetMarkerEnabled( aSelectionMode == NodeSelection );
-
double x = theSelectionEvent->myX;
double y = theSelectionEvent->myY;
*/
void
SALOME_Actor
-::SetNameActorOffset(int theOffset[2])
+::SetNameActorOffset(double theOffset[2])
{
myNameActor->SetOffset(theOffset);
}
*/
void
SALOME_Actor
-::GetNameActorSize(vtkRenderer* theRenderer, int theSize[2]) const
+::GetNameActorSize(vtkRenderer* theRenderer, double theSize[2]) const
{
myNameActor->GetSize(theRenderer, theSize);
}
{
if( vtkRenderer* aRenderer = GetRenderer() )
{
- int anOffset[2] = { 0, 0 };
+ double anOffset[2] = { 0, 0 };
VTK::ActorCollectionCopy aCopy(aRenderer->GetActors());
vtkActorCollection* aCollection = aCopy.GetActors();
for( int anIndex = 0, aNbItems = aCollection->GetNumberOfItems(); anIndex < aNbItems; anIndex++ )
anActor->SetNameActorOffset( anOffset );
if( anActor->GetVisibility() )
{
- int aSize[2];
+ double aSize[2];
anActor->GetNameActorSize( aRenderer, aSize );
anOffset[0] = anOffset[0] + aSize[0];
anOffset[1] = anOffset[1] + aSize[1];
myCellAreaPicker = theAreaPicker;
}
+/*!
+ To find a gravity center of object
+ \param theObjId - identification of object
+*/
+double*
+SALOME_Actor
+::GetGravityCenter( int theObjId )
+{
+ double* result = new double[3];
+ for( int i = 0; i < 3; i++ )
+ result[i]= 0.0;
+
+ vtkPoints* points = GetElemCell( theObjId )->GetPoints();
+ int nbPoints = points->GetNumberOfPoints();
+
+ if( nbPoints <= 0 )
+ return NULL;
+
+ for( int i = 0; i < nbPoints; i++ )
+ {
+ double* aPoint = points->GetPoint(i);
+ result[0] += aPoint[0];
+ result[1] += aPoint[1];
+ result[2] += aPoint[2];
+ }
+ result[0] = result[0] / nbPoints;
+ result[1] = result[1] / nbPoints;
+ result[2] = result[2] / nbPoints;
+
+ return result;
+}
+
/*!
To set up a prehighlight property (initialized by SVTK_Renderer::AddActor)
*/