From e06b3be4e520297f03ab80652819d4ecf0037978 Mon Sep 17 00:00:00 2001 From: vsr Date: Mon, 21 Mar 2011 16:03:00 +0000 Subject: [PATCH] Merge from BR_WIN_INDUS_514 branch 21/03/2011 (Windows industrialization) --- doc/salome/gui/VISU/images/viewing13.png | Bin 6814 -> 8035 bytes doc/salome/gui/VISU/input/table_3d.doc | 2 +- .../VISU/input/viewing_3d_presentations.doc | 12 ++-- src/OBJECT/VISU_ActorBase.cxx | 5 ++ src/OBJECT/VISU_ActorBase.h | 6 ++ src/OBJECT/VISU_VectorsAct.cxx | 5 ++ src/OBJECT/VISU_VectorsAct.h | 6 ++ src/PIPELINE/VISU_PipeLine.cxx | 43 ++++++++++-- src/PIPELINE/VISU_PipeLine.hxx | 12 ++++ src/PIPELINE/VISU_PipeLineUtils.cxx | 65 +++++++++++++++--- src/PIPELINE/VISU_PipeLineUtils.hxx | 20 +++++- src/VISUGUI/VISU_msg_en.ts | 6 +- src/VISUGUI/VisuGUI.cxx | 6 +- src/VISUGUI/VisuGUI_ClippingDlg.cxx | 32 +++++---- src/VISUGUI/VisuGUI_ClippingDlg.h | 2 +- src/VISUGUI/VisuGUI_TransparencyDlg.cxx | 12 ++-- src/VISU_I/VISU_ClippingPlaneMgr.cxx | 7 +- src/VISU_I/VISU_ClippingPlaneMgr.hxx | 2 +- src/VISU_I/VISU_PointMap3d_i.cc | 1 + src/VISU_I/VISU_Prs3dUtils.cc | 34 ++++++--- src/VISU_I/VISU_Prs3dUtils.hh | 14 ++-- src/VISU_I/VISU_Prs3d_i.cc | 2 + src/VISU_I/VISU_TimeAnimation.cxx | 37 +++++++--- 23 files changed, 251 insertions(+), 80 deletions(-) diff --git a/doc/salome/gui/VISU/images/viewing13.png b/doc/salome/gui/VISU/images/viewing13.png index 76bd8d54b8fbc5a8476036cc87f3131f20679b2d..934a7a0ec83d34eb8b4f1c4bf575df0da0e87c1f 100755 GIT binary patch literal 8035 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 literal 6814 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 diff --git a/doc/salome/gui/VISU/input/table_3d.doc b/doc/salome/gui/VISU/input/table_3d.doc index 7a02dd46..38cf54b6 100644 --- a/doc/salome/gui/VISU/input/table_3d.doc +++ b/doc/salome/gui/VISU/input/table_3d.doc @@ -43,7 +43,7 @@ bar displayed with this presentation (\ref scalar_map_page "see also"). It is also possible to choose \b Wireframe or \b Shading \b Representation type, change -such properties as \b Opacity and Line Width and Translate the presentation using the context menu. +such properties as \b Transparency and Line Width and Translate the presentation using the context menu.
See Also a sample TUI Script of \ref tui_table_3d_page "Table 3D presentation creation". diff --git a/doc/salome/gui/VISU/input/viewing_3d_presentations.doc b/doc/salome/gui/VISU/input/viewing_3d_presentations.doc index d5a679da..771a121e 100644 --- a/doc/salome/gui/VISU/input/viewing_3d_presentations.doc +++ b/doc/salome/gui/VISU/input/viewing_3d_presentations.doc @@ -83,16 +83,16 @@ are visualized: as straight lines or as arcs of circle. \image html quadratic.png - \b Properties - - \b Opacity - allows to set the value of opacity of the - presentation between 0 (transparent) and 100 (opaque). + - \b Transparency - allows to set the value of transparency of the + presentation between 0 (opaque) and 100 (transparent). \note For a \ref gauss_points_presentations_page "Gauss Points" presentation, displayed using Point Sprites or OpenGL Points \ref primitive_types_page "primitives", this property only allows switching between transparent and opaque modes. The - textures are drawn in the opaque mode if the opacity is equal to - 100% and in the transparent mode if the opacity is lower that 100% - (note that they become invisible when the opacity is equal to - 0%).\n\n \image html viewing13.png + textures are drawn in the opaque mode if the transparency is equal to + 0% and in the transparent mode if the transparency is > 0% + (note that they become invisible when the transparency is equal to + 100%).\n\n \image html viewing13.png - Line Width - allows to set the width of lines representing edges of the presentation between 1 (thin) and 100 (thick).\n\n \image html line_width.png diff --git a/src/OBJECT/VISU_ActorBase.cxx b/src/OBJECT/VISU_ActorBase.cxx index fbb889e3..9598883c 100644 --- a/src/OBJECT/VISU_ActorBase.cxx +++ b/src/OBJECT/VISU_ActorBase.cxx @@ -194,3 +194,8 @@ void VISU_ActorBase::ConnectToFactory(boost::signal0& theUpdateActorSignal myUpdateActorsConnection = theUpdateActorSignal.connect(boost::bind(&VISU_ActorBase::UpdateFromFactory,this)); myRemoveFromRendererConnection = theRemoveFromRendererSignal.connect(boost::bind(&VISU_ActorBase::RemoveFromRender,this)); } + +//-------------------------------------------------------------------------------------- +vtkDataSet* VISU_ActorBase::GetHighlightedDataSet() { + return myPassFilter.back()->GetOutput(); +} diff --git a/src/OBJECT/VISU_ActorBase.h b/src/OBJECT/VISU_ActorBase.h index b4e2da39..8651efda 100644 --- a/src/OBJECT/VISU_ActorBase.h +++ b/src/OBJECT/VISU_ActorBase.h @@ -75,6 +75,12 @@ class VISU_OBJECT_EXPORT VISU_ActorBase: public SALOME_Actor, virtual void ConnectToFactory(boost::signal0& , boost::signal0&); + //---------------------------------------------------------------------------- + //! Return pointer to the dataset, which used to calculation of the bounding box of the actor + //! Redefined from VTKViewer_Actor + virtual vtkDataSet* GetHighlightedDataSet(); + + protected: VISU_ActorBase(); virtual ~VISU_ActorBase(); diff --git a/src/OBJECT/VISU_VectorsAct.cxx b/src/OBJECT/VISU_VectorsAct.cxx index a2e866ba..9b2ee148 100644 --- a/src/OBJECT/VISU_VectorsAct.cxx +++ b/src/OBJECT/VISU_VectorsAct.cxx @@ -143,3 +143,8 @@ VISU_VectorsAct return Superclass::GetValLabelsInput(); } + +//-------------------------------------------------------------------------------------- +vtkDataSet* VISU_VectorsAct::GetHighlightedDataSet() { + return myPassFilter[3]->GetOutput(); +} diff --git a/src/OBJECT/VISU_VectorsAct.h b/src/OBJECT/VISU_VectorsAct.h index 2729a683..b6e533e1 100644 --- a/src/OBJECT/VISU_VectorsAct.h +++ b/src/OBJECT/VISU_VectorsAct.h @@ -69,6 +69,12 @@ class VISU_OBJECT_EXPORT VISU_VectorsAct : public VISU_ScalarMapAct virtual vtkDataSet* GetValLabelsInput(); + + //---------------------------------------------------------------------------- + //! Return pointer to the dataset, which used to calculation of the bounding box of the actor + //! Redefined from VTKViewer_Actor + virtual vtkDataSet* GetHighlightedDataSet(); + protected: VISU_VectorsAct(); diff --git a/src/PIPELINE/VISU_PipeLine.cxx b/src/PIPELINE/VISU_PipeLine.cxx index d9809ae5..58820209 100644 --- a/src/PIPELINE/VISU_PipeLine.cxx +++ b/src/PIPELINE/VISU_PipeLine.cxx @@ -52,6 +52,8 @@ VISU_PipeLine myIsFeatureEdgesAllowed(true) { if(MYDEBUG) MESSAGE("VISU_PipeLine::VISU_PipeLine - "<ShallowCopy(thePipeLine->GetMapperHolder(), theIsCopyInput); + for( int i =0 ; i < 6 ; i++) + myVisibleBounds[i] = thePipeLine->myVisibleBounds[i]; + + myVisibleComputeTime = thePipeLine->myVisibleComputeTime; } @@ -394,7 +400,10 @@ VISU_PipeLine thePlane->SetNormal(theDir); vtkFloatingPointType anOrigin[3]; - VISU::DistanceToPosition(GetInput(), + + //Make sure that bounds are calculated + ComputeVisibleBounds(); + VISU::DistanceToPosition(myVisibleBounds, theDir, theDist, anOrigin); @@ -411,14 +420,16 @@ VISU_PipeLine vtkPlane* thePlane) { thePlane->GetNormal(theDir); - + vtkFloatingPointType anOrigin[3]; thePlane->GetOrigin(anOrigin); - - VISU::PositionToDistance(GetInput(), - theDir, - anOrigin, - theDist); + + //Make sure that bounds are calculated + ComputeVisibleBounds(); + VISU::PositionToDistance(myVisibleBounds, + theDir, + anOrigin, + theDist); } @@ -465,4 +476,22 @@ VISU_PipeLine } +//---------------------------------------------------------------------------- +// Re-compute visible bounds if need +void VISU_PipeLine::ComputeVisibleBounds() { + if(GetMTime() > myVisibleComputeTime) { + VISU::ComputeVisibleBounds(GetMapperHolder()->GetOutput(), myVisibleBounds); + myVisibleComputeTime.Modified(); + } +} + +//---------------------------------------------------------------------------- +void VISU_PipeLine::GetVisibleBounds(vtkFloatingPointType theBounds[6]) { + // Compute or get cached bounds + ComputeVisibleBounds(); + for (int i=0; i<6; i++) { + theBounds[i] = myVisibleBounds[i]; + } +} + //---------------------------------------------------------------------------- diff --git a/src/PIPELINE/VISU_PipeLine.hxx b/src/PIPELINE/VISU_PipeLine.hxx index d2bf38a5..c712e05c 100644 --- a/src/PIPELINE/VISU_PipeLine.hxx +++ b/src/PIPELINE/VISU_PipeLine.hxx @@ -40,6 +40,7 @@ class vtkMapper; class vtkDataSet; class vtkPointSet; class vtkImplicitFunction; +class vtkTimeStamp; class VISU_MapperHolder; @@ -179,6 +180,9 @@ public: vtkFloatingPointType& theDist, vtkPlane* thePlane); + void + GetVisibleBounds(vtkFloatingPointType theBounds[6]); + //---------------------------------------------------------------------------- static size_t @@ -209,6 +213,10 @@ protected: void DoShallowCopy(VISU_PipeLine *thePipeLine, bool theIsCopyInput); + + virtual + void + ComputeVisibleBounds(); //---------------------------------------------------------------------------- vtkDataSet* @@ -219,6 +227,10 @@ protected: void SetIsFeatureEdgesAllowed(bool theIsFeatureEdgesAllowed); + + //Visible bounds xmin, xmax, ymin, ymax, zmin, zmax + vtkFloatingPointType myVisibleBounds[6]; + vtkTimeStamp myVisibleComputeTime; // Time at which visible bounds computed private: //---------------------------------------------------------------------------- diff --git a/src/PIPELINE/VISU_PipeLineUtils.cxx b/src/PIPELINE/VISU_PipeLineUtils.cxx index b048a04c..0219054d 100644 --- a/src/PIPELINE/VISU_PipeLineUtils.cxx +++ b/src/PIPELINE/VISU_PipeLineUtils.cxx @@ -162,14 +162,15 @@ namespace VISU //---------------------------------------------------------------------------- void - ComputeBoundsParam(vtkDataSet* theDataSet, + ComputeBoundsParam(vtkFloatingPointType theBounds[6], vtkFloatingPointType theDirection[3], vtkFloatingPointType theMinPnt[3], vtkFloatingPointType& theMaxBoundPrj, vtkFloatingPointType& theMinBoundPrj) { vtkFloatingPointType aBounds[6]; - theDataSet->GetBounds(aBounds); + for(int i = 0; i < 6; i++) + aBounds[i] = theBounds[i]; //Enlarge bounds in order to avoid conflicts of precision for(int i = 0; i < 6; i += 2){ @@ -211,13 +212,13 @@ namespace VISU //---------------------------------------------------------------------------- void - DistanceToPosition(vtkDataSet* theDataSet, + DistanceToPosition(vtkFloatingPointType theBounds[6], vtkFloatingPointType theDirection[3], vtkFloatingPointType theDist, vtkFloatingPointType thePos[3]) { vtkFloatingPointType aMaxBoundPrj, aMinBoundPrj, aMinPnt[3]; - ComputeBoundsParam(theDataSet, + ComputeBoundsParam(theBounds, theDirection, aMinPnt, aMaxBoundPrj, @@ -231,13 +232,13 @@ namespace VISU //---------------------------------------------------------------------------- void - PositionToDistance(vtkDataSet* theDataSet, + PositionToDistance(vtkFloatingPointType theBounds[6], vtkFloatingPointType theDirection[3], vtkFloatingPointType thePos[3], vtkFloatingPointType& theDist) { vtkFloatingPointType aMaxBoundPrj, aMinBoundPrj, aMinPnt[3]; - ComputeBoundsParam(theDataSet, + ComputeBoundsParam(theBounds, theDirection, aMinPnt, aMaxBoundPrj, @@ -245,8 +246,7 @@ namespace VISU vtkFloatingPointType aPrj = vtkMath::Dot(theDirection,thePos); theDist = (aPrj-aMinBoundPrj)/(aMaxBoundPrj-aMinBoundPrj); } - - + //---------------------------------------------------------------------------- bool IsQuadraticData(vtkDataSet* theDataSet) @@ -258,6 +258,53 @@ namespace VISU return false; } - //---------------------------------------------------------------------------- + //Compute bounds of the visible part of the dataset + void + ComputeVisibleBounds(vtkDataSet* theDataSet, vtkFloatingPointType theBounds[6]) { + int nbCells, i, j, minIdx, maxIdx; + vtkFloatingPointType cellBounds[6]; + + if( theDataSet && (nbCells = theDataSet->GetNumberOfCells()) ) { + theDataSet->GetCellBounds(0,theBounds); + for ( i = 1; i < nbCells; i++ ) { + theDataSet->GetCellBounds(i, cellBounds); + for ( j = 0; j < 3; j++ ) { + minIdx = 2*j; + maxIdx = 2*j+1; + if ( cellBounds[minIdx] < theBounds[minIdx] ) { + theBounds[minIdx] = cellBounds[minIdx]; + } + if ( cellBounds[maxIdx] > theBounds[maxIdx] ) { + theBounds[maxIdx] = cellBounds[maxIdx]; + } + } + } + } else { + vtkMath::UninitializeBounds(theBounds); + } + } + + //---------------------------------------------------------------------------- + //Compute center of the box, box defined as xmin, xmax, ymin, ymax, zmin, zmax + void + ComputeBoxCenter(vtkFloatingPointType theBounds[6], vtkFloatingPointType theCenter[3]) { + for (int i=0; i<3; i++) { + theCenter[i] = (theBounds[2*i+1] + theBounds[2*i]) / 2.0; + } + } + + //---------------------------------------------------------------------------- + //Compute length of the box diagonal, box defined as xmin, xmax, ymin, ymax, zmin, zmax + double + ComputeBoxDiagonal(vtkFloatingPointType theBounds[6]) { + double diff, len=0.0; + int i; + for (i=0; i<3; i++) { + diff = (double)(theBounds[2*i+1]) - (double)(theBounds[2*i]); + len += diff * diff; + } + diff = sqrt(len); + return diff; + } } diff --git a/src/PIPELINE/VISU_PipeLineUtils.hxx b/src/PIPELINE/VISU_PipeLineUtils.hxx index ca2e2d54..a77dd31d 100644 --- a/src/PIPELINE/VISU_PipeLineUtils.hxx +++ b/src/PIPELINE/VISU_PipeLineUtils.hxx @@ -126,7 +126,7 @@ namespace VISU //---------------------------------------------------------------------------- void VISU_PIPELINE_EXPORT - ComputeBoundsParam(vtkDataSet* theDataSet, + ComputeBoundsParam(vtkFloatingPointType theBounds[6], vtkFloatingPointType theDirection[3], vtkFloatingPointType theMinPnt[3], vtkFloatingPointType& theMaxBoundPrj, @@ -135,7 +135,7 @@ namespace VISU //---------------------------------------------------------------------------- void VISU_PIPELINE_EXPORT - DistanceToPosition(vtkDataSet* theDataSet, + DistanceToPosition(vtkFloatingPointType theBounds[6], vtkFloatingPointType theDirection[3], vtkFloatingPointType theDist, vtkFloatingPointType thePos[3]); @@ -143,7 +143,7 @@ namespace VISU //---------------------------------------------------------------------------- void VISU_PIPELINE_EXPORT - PositionToDistance(vtkDataSet* theDataSet, + PositionToDistance(vtkFloatingPointType theBounds[6], vtkFloatingPointType theDirection[3], vtkFloatingPointType thePos[3], vtkFloatingPointType& theDist); @@ -152,6 +152,20 @@ namespace VISU //---------------------------------------------------------------------------- bool VISU_PIPELINE_EXPORT IsQuadraticData(vtkDataSet* theDataSet); + + //---------------------------------------------------------------------------- + void VISU_PIPELINE_EXPORT + ComputeVisibleBounds(vtkDataSet* theDataSet, + vtkFloatingPointType theBounds[6]); + + //---------------------------------------------------------------------------- + void VISU_PIPELINE_EXPORT + ComputeBoxCenter(vtkFloatingPointType theBounds[6], vtkFloatingPointType theCenter[3]); + + //---------------------------------------------------------------------------- + double VISU_PIPELINE_EXPORT + ComputeBoxDiagonal(vtkFloatingPointType theBounds[6]); + } #endif diff --git a/src/VISUGUI/VISU_msg_en.ts b/src/VISUGUI/VISU_msg_en.ts index b67b34b7..af51cd21 100644 --- a/src/VISUGUI/VISU_msg_en.ts +++ b/src/VISUGUI/VISU_msg_en.ts @@ -900,8 +900,8 @@ Input value precision can be adjusted using Shading Off - MEN_OPACITY - Opacity + MEN_TRANSPARENCY + Transparency MEN_PARALLEL_ANIMATION @@ -3214,7 +3214,7 @@ Please, refer to the QT documentation. TRANSPARENCY_TITLE - Change Transparency + Transparency TRANSPARENCY_TRANSPARENT diff --git a/src/VISUGUI/VisuGUI.cxx b/src/VISUGUI/VisuGUI.cxx index 0377e286..bd549708 100644 --- a/src/VISUGUI/VisuGUI.cxx +++ b/src/VISUGUI/VisuGUI.cxx @@ -2796,8 +2796,8 @@ VisuGUI tr("MEN_EDGE_COLOR"), "", 0, aParent, false, this, SLOT(OnChangeWireframeColor())); - createAction( VISU_OPACITY, tr("MEN_OPACITY"), QIcon(), - tr("MEN_OPACITY"), "", 0, aParent, false, + createAction( VISU_OPACITY, tr("MEN_TRANSPARENCY"), QIcon(), + tr("MEN_TRANSPARENCY"), "", 0, aParent, false, this, SLOT(OnChangeOpacity())); createAction( VISU_LINE_WIDTH, tr("MEN_LINE_WIDTH"), QIcon(), @@ -3693,7 +3693,7 @@ VisuGUI action(VISU_RENAME )->setEnabled(true); // Rename: Key_F2 ((VisuGUI_ClippingPanel*) myPanels[ClippingPlanesPanelId])->init(); - + GetVisuGen( this )->GetClippingPlaneMgr().SetStudy(GetCStudy(dynamic_cast(theStudy)),true); emit moduleActivated(); return aResult; diff --git a/src/VISUGUI/VisuGUI_ClippingDlg.cxx b/src/VISUGUI/VisuGUI_ClippingDlg.cxx index 0f9bea8d..458a8058 100644 --- a/src/VISUGUI/VisuGUI_ClippingDlg.cxx +++ b/src/VISUGUI/VisuGUI_ClippingDlg.cxx @@ -31,6 +31,7 @@ #include "VISU_ColoredPrs3dHolder_i.hh" #include "VISU_PipeLine.hxx" +#include "VISU_PipeLineUtils.hxx" #include "VISU_DataSetActor.h" #include @@ -948,16 +949,23 @@ void VisuGUI_ClippingDlg::SetCurrentPlaneParam() myPrs3d->SetPlaneParam(aNormal, 1. - getDistance(), aPlane); - vtkDataSet* aDataSet = myPrs3d->GetInput(); - vtkFloatingPointType *aPnt = aDataSet->GetCenter(); + //Get bounds of the visible part of the dataset + vtkFloatingPointType aBounds[6]; + myPrs3d->GetPipeLine()->GetVisibleBounds(aBounds); - vtkFloatingPointType* anOrigin = aPlane->GetOrigin(); - vtkFloatingPointType aDel = aDataSet->GetLength()/2.0; + //Get center + vtkFloatingPointType aPnt[3]; + VISU::ComputeBoxCenter(aBounds,aPnt); + vtkFloatingPointType* anOrigin = aPlane->GetOrigin(); + + //Get Length of the diagonal + vtkFloatingPointType aDel = VISU::ComputeBoxDiagonal(aBounds)/2.0; + vtkFloatingPointType aDelta[2][3] = {{aDir[0][0]*aDel, aDir[0][1]*aDel, aDir[0][2]*aDel}, {aDir[1][0]*aDel, aDir[1][1]*aDel, aDir[1][2]*aDel}}; vtkFloatingPointType aParam, aPnt0[3], aPnt1[3], aPnt2[3]; - + vtkFloatingPointType aPnt01[3] = {aPnt[0] - aDelta[0][0] - aDelta[1][0], aPnt[1] - aDelta[0][1] - aDelta[1][1], aPnt[2] - aDelta[0][2] - aDelta[1][2]}; @@ -1014,7 +1022,7 @@ void VisuGUI_ClippingDlg::onTabChanged(QWidget* newTab) // purpose : set non structured parameters by IJK parameters //================================================================================= void VisuGUI_ClippingDlg::SetCurrentPlaneIJKParam() -{ +{ if (myPlanes.empty() || myIsSelectPlane || !WidgetIJKTab->isEnabled()) return; @@ -1139,11 +1147,11 @@ void VisuGUI_ClippingDlg::setIJKByNonStructured() // find index value double v = SpinBoxDistance->value(); // reverse value? -// bool reverse = (normal * axDir < 0); // normal and axis are opposite -// if (gridDir * axDir < 0) // grid dir and axis are opposite -// reverse = !reverse; -// if (reverse) -// v = 1. - v; + bool reverse = (normal * axDir < 0); // normal and axis are opposite + if (gridDir * axDir < 0) // grid dir and axis are opposite + reverse = !reverse; + if (reverse) + v = 1. - v; for (i = 0; i < values->size(); ++i) if ((*values)[ i ] > v) break; @@ -1153,11 +1161,11 @@ void VisuGUI_ClippingDlg::setIJKByNonStructured() --i; // set control values + onIJKAxisChanged(gridAxId); // first of all update label and range of index myIsSelectPlane = true; CheckBoxIJKPlaneReverse->setChecked(normal * axDir < 0); SpinBoxIJKIndex->setValue(i); ButtonGroupIJKAxis->button(gridAxId)->setChecked( true ); - onIJKAxisChanged(gridAxId); // update label and range of index myIsSelectPlane = false; SetCurrentPlaneIJKParam(); diff --git a/src/VISUGUI/VisuGUI_ClippingDlg.h b/src/VISUGUI/VisuGUI_ClippingDlg.h index a40cd1c0..18daf564 100644 --- a/src/VISUGUI/VisuGUI_ClippingDlg.h +++ b/src/VISUGUI/VisuGUI_ClippingDlg.h @@ -213,6 +213,6 @@ public slots: void ClickOnHelp(); }; -#endif // DIALOGBOX_TRANSPARENCYDLG_H +#endif // DIALOGBOX_CLIPPING_H diff --git a/src/VISUGUI/VisuGUI_TransparencyDlg.cxx b/src/VISUGUI/VisuGUI_TransparencyDlg.cxx index f14baab8..6ea3a861 100644 --- a/src/VISUGUI/VisuGUI_TransparencyDlg.cxx +++ b/src/VISUGUI/VisuGUI_TransparencyDlg.cxx @@ -92,8 +92,8 @@ VisuGUI_TransparencyDlg::VisuGUI_TransparencyDlg( VisuGUI* theModule, GroupC1Layout->setMargin(11); TextLabelTransparent = new QLabel(tr("TRANSPARENCY_TRANSPARENT" ), GroupC1); - TextLabelTransparent->setAlignment(Qt::AlignLeft); - GroupC1Layout->addWidget(TextLabelTransparent, 0, 0); + TextLabelTransparent->setAlignment(Qt::AlignRight); + GroupC1Layout->addWidget(TextLabelTransparent, 0, 2); ValueLab = new QLabel(GroupC1); ValueLab->setAlignment(Qt::AlignCenter); @@ -102,8 +102,8 @@ VisuGUI_TransparencyDlg::VisuGUI_TransparencyDlg( VisuGUI* theModule, GroupC1Layout->addWidget(ValueLab, 0, 1); TextLabelOpaque = new QLabel(tr("TRANSPARENCY_OPAQUE" ), GroupC1); - TextLabelOpaque->setAlignment(Qt::AlignRight); - GroupC1Layout->addWidget(TextLabelOpaque, 0, 2); + TextLabelOpaque->setAlignment(Qt::AlignLeft); + GroupC1Layout->addWidget(TextLabelOpaque, 0, 1); Slider1 = new QSlider( Qt::Horizontal, GroupC1 ); Slider1->setMinimum( 0 ); @@ -207,7 +207,7 @@ void VisuGUI_TransparencyDlg::SetTransparency() { if( myViewWindow ) { SUIT_OverrideCursor wc; - float opacity = this->Slider1->value() / 100.; + float opacity = (100 - this->Slider1->value() ) / 100.; SALOME_ListIO aList; mySelectionMgr->selectedObjects(aList); @@ -274,7 +274,7 @@ void VisuGUI_TransparencyDlg::onSelectionChanged() } } } - Slider1->setValue( opacity == UNDEF_OPACITY ? DEFAULT_OPACITY : opacity ); + Slider1->setValue( 100 - ( opacity == UNDEF_OPACITY ? DEFAULT_OPACITY : opacity ) ); } ValueHasChanged(); } diff --git a/src/VISU_I/VISU_ClippingPlaneMgr.cxx b/src/VISU_I/VISU_ClippingPlaneMgr.cxx index 7a169cca..50f63e7a 100644 --- a/src/VISU_I/VISU_ClippingPlaneMgr.cxx +++ b/src/VISU_I/VISU_ClippingPlaneMgr.cxx @@ -49,9 +49,9 @@ VISU_ClippingPlaneMgr::~VISU_ClippingPlaneMgr() } //************************************************************* -void VISU_ClippingPlaneMgr::SetStudy(_PTR(Study) theStudy) +void VISU_ClippingPlaneMgr::SetStudy(_PTR(Study) theStudy, bool reinitStudy) { - if (myStudy == theStudy) return; + if (myStudy == theStudy && !reinitStudy) return; myStudy = theStudy; myPlanes->RemoveAllItems(); if (!myStudy) return; @@ -79,7 +79,8 @@ void VISU_ClippingPlaneMgr::SetStudy(_PTR(Study) theStudy) aPlane->setAuto(false); applyPlaneToAll(aPlane); - myPlanes->AddItem(aPlane); + + myPlanes->AddItem(aPlane); } } } diff --git a/src/VISU_I/VISU_ClippingPlaneMgr.hxx b/src/VISU_I/VISU_ClippingPlaneMgr.hxx index 7841a1a0..9357547b 100644 --- a/src/VISU_I/VISU_ClippingPlaneMgr.hxx +++ b/src/VISU_I/VISU_ClippingPlaneMgr.hxx @@ -76,7 +76,7 @@ public: VISU_ClippingPlaneMgr(); ~VISU_ClippingPlaneMgr(); - void SetStudy(_PTR(Study) theStudy); + void SetStudy(_PTR(Study) theStudy, bool reinitStudy = false); long CreateClippingPlane(double X,double Y, double Z, diff --git a/src/VISU_I/VISU_PointMap3d_i.cc b/src/VISU_I/VISU_PointMap3d_i.cc index 97391826..f151528b 100644 --- a/src/VISU_I/VISU_PointMap3d_i.cc +++ b/src/VISU_I/VISU_PointMap3d_i.cc @@ -712,6 +712,7 @@ void VISU::PointMap3d_i::RemoveFromStudy() //---------------------------------------------------------------- void VISU::PointMap3d_i::SetOffset(CORBA::Float theDx, CORBA::Float theDy, CORBA::Float theDz) { + VISU::TSetModified aModified(this); myOffset[0] = theDx; myOffset[1] = theDy; myOffset[2] = theDz; diff --git a/src/VISU_I/VISU_Prs3dUtils.cc b/src/VISU_I/VISU_Prs3dUtils.cc index 60781b56..77675648 100644 --- a/src/VISU_I/VISU_Prs3dUtils.cc +++ b/src/VISU_I/VISU_Prs3dUtils.cc @@ -23,6 +23,8 @@ // Module : VISU // #include "VISU_Prs3dUtils.hh" +#include "VISU_Prs3d_i.hh" +#include "VISU_PointMap3d_i.hh" #include "SalomeApp_Study.h" #include "SALOME_Event.h" @@ -31,8 +33,8 @@ namespace VISU { //---------------------------------------------------------------------------- TSetModified - ::TSetModified(VISU::Prs3d_i* thePrs3d): - myPrs3d(thePrs3d) + ::TSetModified(VISU::PrsObject_i* thePrsObject): + myPrsObject(thePrsObject) { this->Modified(); } @@ -53,17 +55,29 @@ namespace VISU void Execute() { - VISU::Prs3d_i* aPrs3d = mySetModified->myPrs3d; - - if(!aPrs3d || aPrs3d->GetActorEntry() == "") - return; + VISU::PrsObject_i* aPrsObject = mySetModified->myPrsObject; + if(!aPrsObject) + return; + + VISU::Prs3d_i* aPrs3d; + VISU::PointMap3d_i* aPntMap; + SalomeApp_Study* aStudy; + unsigned long int time; + if( (aPrs3d = dynamic_cast(aPrsObject)) && aPrs3d->GetActorEntry() != "" ) { + aStudy = aPrs3d->GetGUIStudy(); + time = aPrs3d->GetMTime(); + } else if ( aPntMap = dynamic_cast(aPrsObject) ) { + aStudy = aPntMap->GetGUIStudy(); + time = aPntMap->GetMTime(); + } else + return; - if(aPrs3d->GetMTime() > mySetModified->GetMTime()){ - if(SalomeApp_Study* aStudy = aPrs3d->GetGUIStudy()) + if(time > mySetModified->GetMTime()){ + if(aStudy) aStudy->Modified(); } - } - }; + } + }; ProcessVoidEvent(new TEvent(this)); } diff --git a/src/VISU_I/VISU_Prs3dUtils.hh b/src/VISU_I/VISU_Prs3dUtils.hh index 13d3abb1..51d32575 100644 --- a/src/VISU_I/VISU_Prs3dUtils.hh +++ b/src/VISU_I/VISU_Prs3dUtils.hh @@ -25,7 +25,7 @@ #ifndef __VISU_PRS3D_UTILS_H__ #define __VISU_PRS3D_UTILS_H__ -#include "VISU_Prs3d_i.hh" +#include "VISU_PrsObject_i.hh" #include @@ -34,16 +34,16 @@ namespace VISU //---------------------------------------------------------------------------- struct TSetModified: vtkTimeStamp { - VISU::Prs3d_i* myPrs3d; + VISU::PrsObject_i* myPrsObject; - TSetModified(VISU::Prs3d_i* thePrs3d); + TSetModified(VISU::PrsObject_i* thePrsObject); ~TSetModified(); }; - - Standard_EXPORT std::string ToFormat( const int thePrec ); - Standard_EXPORT int ToPrecision( const char* theFormat ); - + + VISU_I_EXPORT std::string ToFormat( const int thePrec ); + VISU_I_EXPORT int ToPrecision( const char* theFormat ); + //---------------------------------------------------------------------------- } diff --git a/src/VISU_I/VISU_Prs3d_i.cc b/src/VISU_I/VISU_Prs3d_i.cc index 2ad74b32..b66b023e 100644 --- a/src/VISU_I/VISU_Prs3d_i.cc +++ b/src/VISU_I/VISU_Prs3d_i.cc @@ -675,6 +675,7 @@ void VISU::Prs3d_i ::SetOffset(const CORBA::Float* theOffsets) { + VISU::TSetModified aModified(this); myOffset[0] = theOffsets[0]; myOffset[1] = theOffsets[1]; myOffset[2] = theOffsets[2]; @@ -688,6 +689,7 @@ VISU::Prs3d_i CORBA::Float theDy, CORBA::Float theDz) { + VISU::TSetModified aModified(this); myOffset[0] = theDx; myOffset[1] = theDy; myOffset[2] = theDz; diff --git a/src/VISU_I/VISU_TimeAnimation.cxx b/src/VISU_I/VISU_TimeAnimation.cxx index 24d6ffae..497166a3 100644 --- a/src/VISU_I/VISU_TimeAnimation.cxx +++ b/src/VISU_I/VISU_TimeAnimation.cxx @@ -1500,24 +1500,31 @@ void VISU_TimeAnimation::run() // add missing files if (anIndexList.count() > 1) { - QString aFFile = aDirPath + QDir::separator() + aBaseName; + QString aFFile = aDirPath + "/" + aBaseName; aFFile += QString("_%1.jpeg"); int aStartIndex = anIndexList[0], anEndIndex; for (int i = 1; i < anIndexList.count(); i++) { anEndIndex = anIndexList[i]; QString aCurFile = aFFile.arg(QString::number(aStartIndex).rightJustified(8, '0')); QStringList aCommands; + QString aSeparator; for (int j = aStartIndex+1; j < anEndIndex; j++) { QString aFile = aFFile.arg(QString::number(j).rightJustified(8, '0')); +#ifndef WIN32 aCommands.append(QString("ln -s %1 %2").arg(aCurFile).arg(aFile)); + aSeparator = QString(" ; \\\n"); +#else + aCommands.append(QString("COPY /Y %1 %2 > NUL").arg(QString(aCurFile).replace("/","\\\\")).arg(QString(aFile).replace("/","\\\\"))); + aSeparator = QString(" & "); +#endif } - system(aCommands.join(" ; \\\n").toLatin1().data()); + system(aCommands.join(aSeparator).toLatin1().data()); aStartIndex = anEndIndex; } } // make AVI file - QString aPattern = aDirPath + QDir::separator() + aBaseName; + QString aPattern = aDirPath + "/" + aBaseName; aPattern += "_\%08d.jpeg"; QString aCmd = myAVIMaker; @@ -1526,18 +1533,29 @@ void VISU_TimeAnimation::run() aCmd += QString(" -f %1").arg(aFPS); // aCmd += QString(" -n %1").arg(aNbFiles); aCmd += QString(" -n %1").arg(myFileIndex+1); - aCmd += QString(" -j %1").arg(aPattern); + aCmd += QString(" -j \"%1\"").arg(aPattern); aCmd += " | yuv2lav"; - aCmd += QString(" -o %1").arg(myDumpPath); + aCmd += QString(" -o \"%1\"").arg(myDumpPath); + #ifdef WIN32 + aCmd += " -f aA"; + #endif system(aCmd.toLatin1().data()); // remove temporary jpeg files +#ifndef WIN32 aCmd = "( "; aCmd += QString("cd %1").arg(aDirPath); aCmd += "; ls"; aCmd += QString(" | egrep '%1_[0-9]*.jpeg'").arg(aBaseName); aCmd += " | xargs rm"; aCmd += " )"; +#else + QString tmpFile = QString("_") + aBaseName + "_tempfile"; + QString diskName = aDirPath.split("/")[0]; + aCmd = diskName + " && (cd " + aDirPath.replace("/","\\\\") + + " && ((dir /b | findstr " + aBaseName + "_[0-9]*.jpeg > " + tmpFile + + ") & (for /f %i in (" + tmpFile + ") do (del \"%i\")) & (del " + tmpFile + "))) > NUL"; +#endif system(aCmd.toLatin1().data()); } @@ -1683,9 +1701,12 @@ bool VISU_TimeAnimation::checkAVIMaker() const aDumpFormats.indexOf("jpeg") < 0) return false; - QString aCmd("which "); - aCmd += myAVIMaker; - aCmd += " 2> /dev/null"; + QString aCmd; +#ifndef WIN32 + aCmd = "which " + myAVIMaker + " 2> /dev/null"; +#else + aCmd = "setlocal & set P2=.;%PATH% & (for %e in (%PATHEXT%) do @for %i in (" + myAVIMaker + "%e) do @if NOT \"%~$P2:i\"==\"\" exit /b 0) & exit /b 1"; +#endif int iErr = system(aCmd.toLatin1().data()); return (iErr == 0); } -- 2.39.2