// 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>
#include <vtkLineSource.h>
#include <vtkGlyphSource2D.h>
+#include <vtkPolyData.h>
vtkStandardNewMacro(VISU_VectorsPL);
-VISU_VectorsPL::VISU_VectorsPL(){
- myGlyph = vtkGlyph3D::New();
+VISU_VectorsPL
+::VISU_VectorsPL()
+{
+ myBaseGlyph = vtkGlyph3D::New();
+ myTransformedGlyph = vtkGlyph3D::New();
myGlyphSource = vtkGlyphSource2D::New();
myConeSource = vtkConeSource::New();
myLineSource = vtkLineSource::New();
myCenters = vtkCellCenters::New();
- myTransformFilter = SALOME_TransformFilter::New();
+ myTransformFilter = VTKViewer_TransformFilter::New();
+ myIsShrinkable = false;
}
-VISU_VectorsPL::~VISU_VectorsPL(){
- myGlyph->UnRegisterAllOutputs();
- myGlyph->Delete();
+VISU_VectorsPL
+::~VISU_VectorsPL()
+{
+ myBaseGlyph->Delete();
+ myTransformedGlyph->Delete();
- myCenters->UnRegisterAllOutputs();
myCenters->Delete();
- myGlyphSource->UnRegisterAllOutputs();
myGlyphSource->Delete();
- myConeSource->UnRegisterAllOutputs();
myConeSource->Delete();
- myLineSource->UnRegisterAllOutputs();
myLineSource->Delete();
- myTransformFilter->UnRegisterAllOutputs();
myTransformFilter->Delete();
}
-void VISU_VectorsPL::ShallowCopy(VISU_PipeLine *thePipeLine){
- VISU_DeformedShapePL::ShallowCopy(thePipeLine);
+void
+VISU_VectorsPL
+::ShallowCopy(VISU_PipeLine *thePipeLine)
+{
if(VISU_VectorsPL *aPipeLine = dynamic_cast<VISU_VectorsPL*>(thePipeLine)){
SetGlyphType(aPipeLine->GetGlyphType());
SetGlyphPos(aPipeLine->GetGlyphPos());
}
+ Superclass::ShallowCopy(thePipeLine);
}
-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) {
- if(myScaleFactor == theScale) return;
+void
+VISU_VectorsPL
+::SetScale(vtkFloatingPointType theScale)
+{
+ if(myScaleFactor == theScale)
+ return;
+
myScaleFactor = theScale;
- myGlyph->SetScaleFactor(myScaleFactor);
+
+ myBaseGlyph->SetScaleFactor(myScaleFactor);
+ myTransformedGlyph->SetScaleFactor(myScaleFactor);
+
Modified();
}
-float VISU_VectorsPL::GetScale() {
- return myGlyph->GetScaleFactor();
+
+vtkFloatingPointType
+VISU_VectorsPL
+::GetScale()
+{
+ return myTransformedGlyph->GetScaleFactor();
}
-void VISU_VectorsPL::Init(){
- VISU_DeformedShapePL::Init();
+void
+VISU_VectorsPL
+::Init()
+{
+ Superclass::Init();
myTypeGlyph = ARROW;
myPosGlyph = TAIL;
}
-VISU_ScalarMapPL::THook* VISU_VectorsPL::DoHook(){
- VISU::ToCellCenters(myTransformFilter,myCenters,myInput,myFieldTransform);
- myGlyph->SetInput(myTransformFilter->GetOutput());
- myGlyph->SetVectorModeToUseVector();
- myGlyph->SetScaleModeToScaleByVector();
- myGlyph->SetColorModeToColorByScalar();
- return myGlyph->GetOutput();
+vtkDataSet*
+VISU_VectorsPL
+::GetOutput()
+{
+ myBaseGlyph->Update();
+ return myBaseGlyph->GetOutput();
}
-void VISU_VectorsPL::Update(){
+VISU_ScalarMapPL::THook*
+VISU_VectorsPL
+::DoHook()
+{
+ VISU::ToCellCenters(myBaseGlyph,myCenters,GetInput2(),myFieldTransform);
+ myBaseGlyph->SetVectorModeToUseVector();
+ myBaseGlyph->SetScaleModeToScaleByVector();
+ myBaseGlyph->SetColorModeToColorByScalar();
+
+ VISU::ToCellCenters(myTransformFilter,myCenters,GetInput2(),myFieldTransform);
+ myTransformedGlyph->SetInput(myTransformFilter->GetOutput());
+ myTransformedGlyph->SetVectorModeToUseVector();
+ myTransformedGlyph->SetScaleModeToScaleByVector();
+ myTransformedGlyph->SetColorModeToColorByScalar();
+
+ return myTransformedGlyph->GetOutput();
+}
+
+
+void
+VISU_VectorsPL
+::Update()
+{
switch (myTypeGlyph) {
case ARROW: {
myGlyphSource->SetGlyphTypeToArrow();
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());
+ myBaseGlyph->SetSource(myGlyphSource->GetOutput());
+ myTransformedGlyph->SetSource(myGlyphSource->GetOutput());
}
break;
case CONE2:
myConeSource->SetResolution(7);
myConeSource->SetHeight(1.0);
myConeSource->SetRadius(.1);
-
+
switch (myPosGlyph) {
case TAIL:
myConeSource->SetCenter(0.5, 0.0, 0.0);
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());
+ myBaseGlyph->SetSource(myConeSource->GetOutput());
+ myTransformedGlyph->SetSource(myConeSource->GetOutput());
}
break;
case NONE:
default: {
- myGlyph->SetSource(myLineSource->GetOutput());
+ myBaseGlyph->SetSource(myLineSource->GetOutput());
+ myTransformedGlyph->SetSource(myLineSource->GetOutput());
}
}
- VISU_DeformedShapePL::Update();
+ Superclass::Update();
}
-void VISU_VectorsPL::SetMapScale(float theMapScale){
+void
+VISU_VectorsPL
+::SetMapScale(vtkFloatingPointType theMapScale)
+{
VISU_ScalarMapPL::SetMapScale(theMapScale);
- myGlyph->SetScaleFactor(myScaleFactor*theMapScale);
- myGlyph->Modified();
+ myBaseGlyph->SetScaleFactor(myScaleFactor*theMapScale);
+ myTransformedGlyph->SetScaleFactor(myScaleFactor*theMapScale);
+
+ Modified();
}