Salome HOME
Join modifications from branch OCC_debug_for_3_2_0b1
[modules/visu.git] / src / PIPELINE / VISU_VectorsPL.cxx
index ddb703b5afaa80c3a888148004e9b7144fb9568c..d37324f63ae1706cd40f25e4f870cdd67e181bd8 100644 (file)
@@ -1,23 +1,23 @@
 //  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();
@@ -131,11 +179,8 @@ void VISU_VectorsPL::Update(){
     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:
@@ -146,7 +191,7 @@ void VISU_VectorsPL::Update(){
       myConeSource->SetResolution(7);
     myConeSource->SetHeight(1.0);
     myConeSource->SetRadius(.1);
-    
+
     switch (myPosGlyph) {
     case TAIL:
       myConeSource->SetCenter(0.5, 0.0, 0.0);
@@ -157,26 +202,29 @@ void VISU_VectorsPL::Update(){
     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();
 }