X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPIPELINE%2FVISU_VectorsPL.cxx;h=92a5e57591f621e2630166c5afd44252110c2384;hb=953451df51750a1d9910c0325f01d5ca7b6e0330;hp=c34d36d9de8c7aaa94e0dd53497450ddf1489917;hpb=a0e8baac65f96614028cb00fc929133b3f3925f9;p=modules%2Fvisu.git diff --git a/src/PIPELINE/VISU_VectorsPL.cxx b/src/PIPELINE/VISU_VectorsPL.cxx index c34d36d9..92a5e575 100644 --- a/src/PIPELINE/VISU_VectorsPL.cxx +++ b/src/PIPELINE/VISU_VectorsPL.cxx @@ -34,11 +34,15 @@ #include #include #include +#include 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(); @@ -49,75 +53,118 @@ VISU_VectorsPL::VISU_VectorsPL(){ 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(thePipeLine)){ SetGlyphType(aPipeLine->GetGlyphType()); SetGlyphPos(aPipeLine->GetGlyphPos()); } + Superclass::ShallowCopy(thePipeLine); } -void VISU_VectorsPL::SetTransform(VTKViewer_Transform* theTransform){ +void +VISU_VectorsPL +::SetTransform(VTKViewer_Transform* theTransform) +{ myFieldTransform->SetSpaceTransform(theTransform); myTransformFilter->SetTransform(theTransform); myTransformFilter->Modified(); } -VTKViewer_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(float theScale) +{ + if(myScaleFactor == theScale) + return; + myScaleFactor = theScale; - myGlyph->SetScaleFactor(myScaleFactor); + + myBaseGlyph->SetScaleFactor(myScaleFactor); + myTransformedGlyph->SetScaleFactor(myScaleFactor); + Modified(); } -float VISU_VectorsPL::GetScale() { - return myGlyph->GetScaleFactor(); + +float +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(){ +vtkDataSet* +VISU_VectorsPL +::GetOutput() +{ + myBaseGlyph->Update(); + return myBaseGlyph->GetOutput(); +} + + +VISU_ScalarMapPL::THook* +VISU_VectorsPL +::DoHook() +{ + VISU::ToCellCenters(myBaseGlyph,myCenters,GetInput2(),myFieldTransform); + myBaseGlyph->SetVectorModeToUseVector(); + myBaseGlyph->SetScaleModeToScaleByVector(); + myBaseGlyph->SetColorModeToColorByScalar(); + VISU::ToCellCenters(myTransformFilter,myCenters,GetInput2(),myFieldTransform); - myGlyph->SetInput(myTransformFilter->GetOutput()); - myGlyph->SetVectorModeToUseVector(); - myGlyph->SetScaleModeToScaleByVector(); - myGlyph->SetColorModeToColorByScalar(); - return myGlyph->GetOutput(); + myTransformedGlyph->SetInput(myTransformFilter->GetOutput()); + myTransformedGlyph->SetVectorModeToUseVector(); + myTransformedGlyph->SetScaleModeToScaleByVector(); + myTransformedGlyph->SetColorModeToColorByScalar(); + + return myTransformedGlyph->GetOutput(); } -void VISU_VectorsPL::Update(){ +void +VISU_VectorsPL +::Update() +{ switch (myTypeGlyph) { case ARROW: { myGlyphSource->SetGlyphTypeToArrow(); @@ -132,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: @@ -158,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(float theMapScale) +{ VISU_ScalarMapPL::SetMapScale(theMapScale); - myGlyph->SetScaleFactor(myScaleFactor*theMapScale); - myGlyph->Modified(); + myBaseGlyph->SetScaleFactor(myScaleFactor*theMapScale); + myTransformedGlyph->SetScaleFactor(myScaleFactor*theMapScale); + + Modified(); }