// VISU OBJECT : interactive object for VISU entities implementation
//
// Copyright (C) 2003 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.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+// 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.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
//
//
//
#include <vtkDataSetMapper.h>
#include <vtkDataSet.h>
#include <vtkMatrix4x4.h>
-#include <vtkMapperCollection.h>
+#include <vtkMapperCollection.h>
vtkStandardNewMacro(VISU_MeshAct);
VISU_MeshAct::VISU_MeshAct(){
-
+
vtkMatrix4x4 *m;
m = vtkMatrix4x4::New();
mySurfaceActor->GetProperty()->BackfaceCullingOff();
mySurfaceActor->SetUserMatrix(m);
mySurfaceActor->SetRepresentation(2); //SURFACE
-
+
myEdgeActor = VISU_Actor::New();
myEdgeActor->SetParent(this);
myEdgeActor->PickableOff();
myEdgeActor->GetProperty()->BackfaceCullingOff();
myEdgeActor->SetUserMatrix(m);
myEdgeActor->SetRepresentation(1); //WIREFRAME
-
+
myNodeActor = VISU_Actor::New();
myNodeActor->SetParent(this);
myNodeActor->PickableOff();
myNodeActor->setIO(theIO);
}
-void VISU_MeshAct::SetPrs3d(VISU::Prs3d_i* thePrs3d){
+void VISU_MeshAct::SetPrs3d(VISU::Prs3d_i* thePrs3d){
if(thePrs3d){
VISU_Actor::SetPrs3d(thePrs3d);
mySurfaceActor->SetPrs3d(thePrs3d);
myEdgeActor->SetShrinkFactor(theValue);
}
-vtkProperty* VISU_MeshAct::GetSurfaceProperty(){
+vtkProperty* VISU_MeshAct::GetSurfaceProperty(){
return mySurfaceActor->GetProperty();
-}
+}
-void VISU_MeshAct::SetSurfaceProperty(vtkProperty* theProperty){
+void VISU_MeshAct::SetSurfaceProperty(vtkProperty* theProperty){
mySurfaceActor->SetProperty(theProperty);
}
-vtkProperty* VISU_MeshAct::GetEdgeProperty(){
+vtkProperty* VISU_MeshAct::GetEdgeProperty(){
return myEdgeActor->GetProperty();
-}
+}
-void VISU_MeshAct::SetEdgeProperty(vtkProperty* theProperty){
+void VISU_MeshAct::SetEdgeProperty(vtkProperty* theProperty){
myEdgeActor->SetProperty(theProperty);
}
-vtkProperty* VISU_MeshAct::GetNodeProperty(){
+vtkProperty* VISU_MeshAct::GetNodeProperty(){
return myNodeActor->GetProperty();
-}
+}
-void VISU_MeshAct::SetNodeProperty(vtkProperty* theProperty){
+void VISU_MeshAct::SetNodeProperty(vtkProperty* theProperty){
myNodeActor->SetProperty(theProperty);
}
GetSurfaceProperty()->SetOpacity(theValue);
}
-float VISU_MeshAct::GetOpacity(){
+float VISU_MeshAct::GetOpacity(){
return GetSurfaceProperty()->GetOpacity();
}
//SetRepresentation(GetRepresentation());
}
-void VISU_MeshAct::SetRepresentation(int theMode){
+void VISU_MeshAct::SetRepresentation(int theMode)
+{
SALOME_Actor::SetRepresentation(theMode);
+
+ if (!GetVisibility()) return; // Fix IPAL9555
+
mySurfaceActor->VisibilityOff();
myEdgeActor->VisibilityOff();
myNodeActor->VisibilityOff();
myEdgeActor->PickableOff();
myNodeActor->PickableOff();
- switch(theMode){
+ switch (theMode) {
case VTK_POINTS:
myNodeActor->VisibilityOn();
myNodeActor->PickableOn();
mySurfaceActor->VisibilityOn();
break;
}
- if(myRepresentation == VTK_POINTS)
+ if (myRepresentation == VTK_POINTS)
UnShrink();
}
float myTime, bestTime, tempTime;
vtkMatrix4x4 *matrix;
vtkMapper *mapper, *bestMapper;
-
+
if (this->Mapper == NULL)
{
vtkErrorMacro("No mapper for actor.");
return;
}
-
+
// first time through create lods if non have been added
if (this->LODMappers->GetNumberOfItems() == 0)
{
this->CreateOwnLODs();
}
-
+
// If the actor has changed or the primary mapper has changed ...
// Is this the correct test?
if (this->MediumMapper)
{
- if (this->GetMTime() > this->BuildTime ||
+ if (this->GetMTime() > this->BuildTime ||
this->Mapper->GetMTime() > this->BuildTime)
{
this->UpdateOwnLODs();
}
}
-
+
// figure out how much time we have to render
myTime = this->AllocatedRenderTime;
- // Figure out which resolution to use
+ // Figure out which resolution to use
// none is a valid resolution. Do we want to have a lowest:
// bbox, single point, ...
// There is no order to the list, so it is assumed that mappers that take
// longer to render are better quality.
- // Timings might become out of date, but we rely on
+ // Timings might become out of date, but we rely on
bestMapper = this->Mapper;
bestTime = bestMapper->GetTimeToDraw();
if (bestTime > myTime)
{
this->LODMappers->InitTraversal();
- while ((mapper = this->LODMappers->GetNextItem()) != NULL &&
+ while ((mapper = this->LODMappers->GetNextItem()) != NULL &&
bestTime != 0.0)
{
tempTime = mapper->GetTimeToDraw();
-
+
// If the LOD has never been rendered, select it!
if (tempTime == 0.0)
- {
+ {
bestMapper = mapper;
bestTime = 0.0;
}
bestTime = tempTime;
}
if (tempTime > bestTime && tempTime < myTime)
- {
+ {
bestMapper = mapper;
bestTime = tempTime;
}
}
}
}
-
+
switch(GetRepresentation()){
case 0: //POINTS
myNodeActor->GetProperty()->Render(this, ren);
mySurfaceActor->GetProperty()->Render(this, ren);
break;
}
-
+
// render the texture
if (this->Texture)
{
this->Texture->Render(ren);
}
-
+
switch(GetRepresentation()){
case 0: //POINTS
matrix = myNodeActor->GetUserMatrix();
break;
}
this->GetMatrix(matrix);
-
+
switch(GetRepresentation()){
case 0: //POINTS
myNodeActor->Render(ren,bestMapper);
mySurfaceActor->Render(ren,bestMapper);
break;
}
-
+
this->EstimatedRenderTime = bestMapper->GetTimeToDraw();
}