Salome HOME
Join modifications from branch OCC_development_for_3_2_0a2
[modules/visu.git] / src / VISU_I / VISU_TimeAnimation.cxx
index c1db8093ddd405f3201c51f57c8751832da4c621..fa5befe56612e2e7a1d87990af36ba8a806ffc4e 100644 (file)
@@ -64,12 +64,12 @@ VISU_TimeAnimation::VISU_TimeAnimation (_PTR(Study) theStudy,
   if (!CORBA::is_nil(theView3D)) {
     VISU::View3D_i* pView = dynamic_cast<VISU::View3D_i*>(GetServant(theView3D).in());
     SUIT_ViewWindow* aVW = pView->GetViewWindow();
-    myView = VISU::GetViewWindow(aVW);
+    myView = dynamic_cast<SVTK_ViewWindow*>(aVW);
     connect( myView, SIGNAL( destroyed() ), this, SLOT( onViewDeleted() ) );
   }
 
-  myMaxVal = 0;
-  myMinVal = 0;
+  myTimeMinVal = 0;
+  myTimeMaxVal = 0;
   myTimeMin = 0;
   myTimeMax = 0;
   myLastError = "";
@@ -162,13 +162,10 @@ namespace
                        FieldData& theData,
                        VISU::Result_i* theResult,
                        bool theIsRangeDefined,
-                       CORBA::Double& theMinVal,
-                       CORBA::Double& theMaxVal,
                        CORBA::Double theTimeMin,
                        CORBA::Double theTimeMax)
   {
-    theMinVal = VTK_LARGE_FLOAT;
-    theMaxVal = -VTK_LARGE_FLOAT;
+    double aMin = VTK_LARGE_FLOAT, aMax = -VTK_LARGE_FLOAT;
 
     _PTR(ChildIterator) anIter = theStudy->NewChildIterator(theData.myField);
     anIter->Next(); // First is reference on support
@@ -202,8 +199,8 @@ namespace
                       aFieldName.latin1(), aTimeStampId);
       theData.myPrs[aFrameId++] = aPresent;
 
-      theMinVal = std::min(aPresent->GetMin(),theMinVal);
-      theMaxVal = std::max(aPresent->GetMax(),theMaxVal);
+      aMin = std::min(aPresent->GetMin(), aMin);
+      aMax = std::max(aPresent->GetMax(), aMax);
     }
     theData.myNbFrames = aFrameId;
 
@@ -212,7 +209,7 @@ namespace
       if( aRangeType != 1 ){
        for(long aFrameId = 0; aFrameId < theData.myNbFrames; aFrameId++) {
          if (VISU::ScalarMap_i* aPrs = dynamic_cast<VISU::ScalarMap_i*>(theData.myPrs[aFrameId])){
-           aPrs->SetRange(theMinVal, theMaxVal);
+           aPrs->SetRange(aMin, aMax);
            aPrs->SetOffset(theData.myOffset);
          }
        }
@@ -220,7 +217,7 @@ namespace
       if (theData.myPrsType == VISU::TISOSURFACE)
        for (long aFrameId = 0; aFrameId < theData.myNbFrames; aFrameId++)
          if (VISU::IsoSurfaces_i* aPrs = dynamic_cast<VISU::IsoSurfaces_i*>(theData.myPrs[aFrameId]))
-           aPrs->SetSubRange(theMinVal, theMaxVal);
+           aPrs->SetSubRange(aMin, aMax);
     }
   }
 }
@@ -246,100 +243,80 @@ void VISU_TimeAnimation::generatePresentations(CORBA::Long theFieldNum) {
                                       aData,
                                       aResult,
                                       isRangeDefined(),
-                                      myMinVal,
-                                      myMaxVal,
-                                      myTimeMin,
-                                      myTimeMax);
+                                      myTimeMinVal,
+                                      myTimeMaxVal);
     break;
   case VISU::TISOSURFACE: // Iso Surfaces
     GeneratePresentations<IsoSurfaces_i>(myStudy,
                                         aData,
                                         aResult,
                                         isRangeDefined(),
-                                        myMinVal,
-                                        myMaxVal,
-                                        myTimeMin,
-                                        myTimeMax);
+                                        myTimeMinVal,
+                                        myTimeMaxVal);
     break;
   case VISU::TCUTPLANES: // Cut Planes
     GeneratePresentations<CutPlanes_i>(myStudy,
                                       aData,
                                       aResult,
                                       isRangeDefined(),
-                                      myMinVal,
-                                      myMaxVal,
-                                      myTimeMin,
-                                      myTimeMax);
+                                      myTimeMinVal,
+                                      myTimeMaxVal);
     break;
   case VISU::TCUTLINES: // Cut Lines
     GeneratePresentations<CutLines_i>(myStudy,
                                      aData,
                                      aResult,
                                      isRangeDefined(),
-                                     myMinVal,
-                                     myMaxVal,
-                                     myTimeMin,
-                                     myTimeMax);
+                                     myTimeMinVal,
+                                     myTimeMaxVal);
     break;
   case VISU::TPLOT3D: // Plot3d
     GeneratePresentations<Plot3D_i>(myStudy,
                                    aData,
                                    aResult,
                                    isRangeDefined(),
-                                   myMinVal,
-                                   myMaxVal,
-                                   myTimeMin,
-                                   myTimeMax);
+                                   myTimeMinVal,
+                                   myTimeMaxVal);
     break;
   case VISU::TDEFORMEDSHAPE: // Deformed Shape
     GeneratePresentations<DeformedShape_i>(myStudy,
                                           aData,
                                           aResult,
                                           isRangeDefined(),
-                                          myMinVal,
-                                          myMaxVal,
-                                          myTimeMin,
-                                          myTimeMax);
+                                          myTimeMinVal,
+                                          myTimeMaxVal);
     break;
   case VISU::TVECTORS: // Vectors
     GeneratePresentations<Vectors_i>(myStudy,
                                     aData,
                                     aResult,
                                     isRangeDefined(),
-                                    myMinVal,
-                                    myMaxVal,
-                                    myTimeMin,
-                                    myTimeMax);
+                                    myTimeMinVal,
+                                    myTimeMaxVal);
     break;
   case VISU::TSTREAMLINES: // Stream Lines
     GeneratePresentations<StreamLines_i>(myStudy,
                                         aData,
                                         aResult,
                                         isRangeDefined(),
-                                        myMinVal,
-                                        myMaxVal,
-                                        myTimeMin,
-                                        myTimeMax);
+                                        myTimeMinVal,
+                                        myTimeMaxVal);
     break;
   case VISU::TGAUSSPOINTS: // Gauss Points
     GeneratePresentations<GaussPoints_i>(myStudy,
                                         aData,
                                         aResult,
                                         isRangeDefined(),
-                                        myMinVal,
-                                        myMaxVal,
-                                        myTimeMin,
-                                        myTimeMax);
+                                        myTimeMinVal,
+                                        myTimeMaxVal);
     break;
   case VISU::TSCALARMAPONDEFORMEDSHAPE: // Scalar map on deformed shape
     GeneratePresentations<ScalarMapOnDeformedShape_i>(myStudy,
                                                      aData,
                                                      aResult,
                                                      isRangeDefined(),
-                                                     myMinVal,
-                                                     myMaxVal,
-                                                     myTimeMin,
-                                                     myTimeMax);
+                                                     myTimeMinVal,
+                                                     myTimeMaxVal);
     break;
   default:
     MESSAGE("Not implemented for this presentation type: " << aData.myPrsType);
@@ -618,8 +595,6 @@ void VISU_TimeAnimation::run()
       qApp->unlock();
       msleep(100);
       qApp->lock();
-
-      QPixmap px = QPixmap::grabWindow(myView->winId());
       QString aFile(myDumpPath);
       QString aName = QString("%1").arg(myFieldsLst[0].myTiming[myFrame]);
       int aPos = -1;
@@ -628,7 +603,7 @@ void VISU_TimeAnimation::run()
       aFile += aName;
       aFile += ".";
       aFile += myDumpFormat.lower();
-      px.save(aFile, myDumpFormat);
+      myView->dumpViewToFormat(aFile,myDumpFormat);
     }
 
     if (!myIsActive) break;
@@ -771,8 +746,8 @@ SALOMEDS::SObject_ptr VISU_TimeAnimation::publishInStudy()
   std::string aSComponentEntry = aSComponent->GetID();
 
   QString aComment;
-  aComment.sprintf("myComment=ANIMATION;myType=%d;myMinVal=%g;myMaxVal=%g",
-                   VISU::TANIMATION,myMinVal,myMaxVal);
+  aComment.sprintf("myComment=ANIMATION;myType=%d;myTimeMinVal=%g;myTimeMaxVal=%g",
+                   VISU::TANIMATION,myTimeMinVal,myTimeMaxVal);
 
   string anEntry = VISU::CreateAttributes(myStudy,aSComponentEntry.c_str(),"","",
                                           GenerateName(),"",aComment,true);
@@ -814,8 +789,8 @@ void VISU_TimeAnimation::saveAnimation()
   std::string aSComponentEntry = aSComponent->GetID();
 
   QString aComment;
-  aComment.sprintf("myComment=ANIMATION;myType=%d;myMinVal=%g;myMaxVal=%g",
-                   VISU::TANIMATION,myMinVal,myMaxVal);
+  aComment.sprintf("myComment=ANIMATION;myType=%d;myTimeMinVal=%g;myTimeMaxVal=%g",
+                   VISU::TANIMATION,myTimeMinVal,myTimeMaxVal);
 
   _PTR(GenericAttribute) anAttr;
   anAttr = aStudyBuilder->FindOrCreateAttribute(aAnimSObject, "AttributeComment");
@@ -881,8 +856,8 @@ void VISU_TimeAnimation::restoreFromStudy(_PTR(SObject) theField)
   VISU::Storable::StrToMap(strIn,aMap);
   bool isExist;
 
-  myMinVal = VISU::Storable::FindValue(aMap,"myMinVal",&isExist).toDouble();
-  myMaxVal = VISU::Storable::FindValue(aMap,"myMaxVal",&isExist).toDouble();
+  myTimeMinVal = VISU::Storable::FindValue(aMap,"myTimeMinVal",&isExist).toDouble();
+  myTimeMaxVal = VISU::Storable::FindValue(aMap,"myTimeMaxVal",&isExist).toDouble();
 
   _PTR(ChildIterator) anIter = myStudy->NewChildIterator(aAnimSObject);
   for (anIter->Init(); anIter->More(); anIter->Next()) {
@@ -939,8 +914,7 @@ void VISU_TimeAnimation::restoreFromStudy(_PTR(SObject) theField)
     aData.myPrs[0]->GetOffset(aData.myOffset);
     for (int i = 1; i < aData.myNbFrames; i++) {
       //jfa 03.08.2005:aData.myPrs[i]->SameAs(aData.myPrs[0]);
-      //enk 06.02.2006:aData.myPrs[i]->SameAsParams(aData.myPrs[0]);//jfa 03.08.2005
-      aData.myPrs[i]->SameAsParams(aData.myPrs[i-1]);//enk 06.02.2006: initializing from previous presentation
+      aData.myPrs[i]->SameAsParams(aData.myPrs[0]);//jfa 03.08.2005
     }
   }
   string aStr = aAnimSObject->GetID();