// 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
//
//
// File: VISU_PipeLine.cxx
#include "VISU_VectorsPL.hxx"
#include "VISU_PipeLineUtils.hxx"
-#include "SALOME_TransformFilter.h"
-#include "SALOME_Transform.h"
+#include "VTKViewer_TransformFilter.h"
+#include "VTKViewer_Transform.h"
#include <vtkGlyph3D.h>
#include <vtkConeSource.h>
VISU_VectorsPL::VISU_VectorsPL(){
myGlyph = vtkGlyph3D::New();
- myTransformFilter = SALOME_TransformFilter::New();
+
+ myGlyphSource = vtkGlyphSource2D::New();
+ myConeSource = vtkConeSource::New();
+ myLineSource = vtkLineSource::New();
+
+ myCenters = vtkCellCenters::New();
+ myTransformFilter = VTKViewer_TransformFilter::New();
+ myIsShrinkable = false;
}
VISU_VectorsPL::~VISU_VectorsPL(){
+ myGlyph->UnRegisterAllOutputs();
myGlyph->Delete();
+
+ myCenters->UnRegisterAllOutputs();
+ myCenters->Delete();
+
+ myGlyphSource->UnRegisterAllOutputs();
+ myGlyphSource->Delete();
+
+ myConeSource->UnRegisterAllOutputs();
+ myConeSource->Delete();
+
+ myLineSource->UnRegisterAllOutputs();
+ myLineSource->Delete();
+
+ myTransformFilter->UnRegisterAllOutputs();
myTransformFilter->Delete();
}
}
-void VISU_VectorsPL::SetTransform(SALOME_Transform* theTransform){
+void VISU_VectorsPL::SetTransform(VTKViewer_Transform* theTransform){
myFieldTransform->SetSpaceTransform(theTransform);
myTransformFilter->SetTransform(theTransform);
myTransformFilter->Modified();
}
-SALOME_Transform* VISU_VectorsPL::GetTransform(){
+VTKViewer_Transform* VISU_VectorsPL::GetTransform(){
return myFieldTransform->GetSpaceTransform();
}
-void VISU_VectorsPL::SetScale(float theScale) {
+void VISU_VectorsPL::SetScale(float theScale) {
if(myScaleFactor == theScale) return;
myScaleFactor = theScale;
myGlyph->SetScaleFactor(myScaleFactor);
Modified();
}
-float VISU_VectorsPL::GetScale() {
+float VISU_VectorsPL::GetScale() {
return myGlyph->GetScaleFactor();
}
VISU_ScalarMapPL::THook* VISU_VectorsPL::DoHook(){
- VISU::ToCellCenters(myTransformFilter,myInput,myFieldTransform);
+ VISU::ToCellCenters(myTransformFilter,myCenters,GetInput2(),myFieldTransform);
myGlyph->SetInput(myTransformFilter->GetOutput());
myGlyph->SetVectorModeToUseVector();
myGlyph->SetScaleModeToScaleByVector();
void VISU_VectorsPL::Update(){
switch (myTypeGlyph) {
case ARROW: {
- vtkGlyphSource2D *aGlyphSource = vtkGlyphSource2D::New();
- aGlyphSource->SetGlyphTypeToArrow();
- aGlyphSource->SetFilled(0);
- if(myPosGlyph == TAIL)
- aGlyphSource->SetCenter(0.5, 0.0, 0.0);
- else if(myPosGlyph == HEAD)
- aGlyphSource->SetCenter(-0.5, 0.0, 0.0);
- myGlyph->SetSource(aGlyphSource->GetOutput());
- aGlyphSource->Register(myGlyph);
- aGlyphSource->Delete();
+ myGlyphSource->SetGlyphTypeToArrow();
+ myGlyphSource->SetFilled(0);
+ switch (myPosGlyph) {
+ case TAIL:
+ myGlyphSource->SetCenter(0.5, 0.0, 0.0);
+ break;
+ case HEAD:
+ myGlyphSource->SetCenter(-0.5, 0.0, 0.0);
+ break;
+ case CENTER:
+ myGlyphSource->SetCenter(0.0, 0.0, 0.0);
+ }
+// if(myPosGlyph == TAIL)
+// myGlyphSource->SetCenter(0.5, 0.0, 0.0);
+// else if(myPosGlyph == HEAD)
+// myGlyphSource->SetCenter(-0.5, 0.0, 0.0);
+ myGlyph->SetSource(myGlyphSource->GetOutput());
}
break;
case CONE2:
case CONE6: {
- vtkConeSource *aGlyphSource = vtkConeSource::New(); //by default
if (myTypeGlyph == CONE2)
- aGlyphSource->SetResolution(3);
+ myConeSource->SetResolution(3);
else
- aGlyphSource->SetResolution(7);
- aGlyphSource->SetHeight(1.0);
- aGlyphSource->SetRadius(.1);
-
- if(myPosGlyph == TAIL)
- aGlyphSource->SetCenter(0.5, 0.0, 0.0);
- else if(myPosGlyph == HEAD)
- aGlyphSource->SetCenter(-0.5, 0.0, 0.0);
-
- myGlyph->SetSource(aGlyphSource->GetOutput());
- aGlyphSource->Register(myGlyph);
- aGlyphSource->Delete();
+ myConeSource->SetResolution(7);
+ myConeSource->SetHeight(1.0);
+ myConeSource->SetRadius(.1);
+
+ switch (myPosGlyph) {
+ case TAIL:
+ myConeSource->SetCenter(0.5, 0.0, 0.0);
+ break;
+ case HEAD:
+ myConeSource->SetCenter(-0.5, 0.0, 0.0);
+ break;
+ case CENTER:
+ myConeSource->SetCenter(0.0, 0.0, 0.0);
+ }
+// if(myPosGlyph == TAIL)
+// myConeSource->SetCenter(0.5, 0.0, 0.0);
+// else if(myPosGlyph == HEAD)
+// myConeSource->SetCenter(-0.5, 0.0, 0.0);
+ myGlyph->SetSource(myConeSource->GetOutput());
}
break;
case NONE:
default: {
- vtkLineSource *aGlyphSource = vtkLineSource::New();
- myGlyph->SetSource(aGlyphSource->GetOutput());
- aGlyphSource->Register(myGlyph);
- aGlyphSource->Delete();
+ myGlyph->SetSource(myLineSource->GetOutput());
}
}