X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_ClippingDlg.h;h=194f6b2f6bc8ae80b0324f8093c8b6d3583c4568;hp=e8cb095f89fa7f8293ed2a402ad851333e15f2bf;hb=44d75c1021a72e6c0880f70c26348d021fdf699d;hpb=f5016d85b7b4b88623723027a1585c6414c4dc66 diff --git a/src/SMESHGUI/SMESHGUI_ClippingDlg.h b/src/SMESHGUI/SMESHGUI_ClippingDlg.h index e8cb095f8..194f6b2f6 100644 --- a/src/SMESHGUI/SMESHGUI_ClippingDlg.h +++ b/src/SMESHGUI/SMESHGUI_ClippingDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -6,7 +6,7 @@ // 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. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -46,60 +46,76 @@ #include #include +class QGroupBox; class QLabel; class QPushButton; class QCheckBox; class QComboBox; class QListWidget; class QListWidgetItem; +class QStackedLayout; +class QSlider; +class QMenu; class SALOME_Actor; class SMESHGUI; class SMESH_Actor; -class SMESHGUI_SpinBox; +class QtxDoubleSpinBox; +class QtxDoubleSpinSlider; +class QtxIntSpinSlider; class vtkActor; class vtkDataSetMapper; class vtkPlaneSource; +class vtkCallbackCommand; +class vtkObject; +class vtkImplicitPlaneWidget; namespace SMESH { + enum Mode { Absolute, Relative }; enum Orientation { XY, YZ, ZX }; class OrientedPlane: public vtkPlane { - QPointer myViewWindow; vtkDataSetMapper* myMapper; - public: - static OrientedPlane *New(); - static OrientedPlane *New(SVTK_ViewWindow* theViewWindow); - vtkTypeMacro (OrientedPlane, vtkPlane); + public: + static OrientedPlane *New(); + static OrientedPlane *New(SVTK_ViewWindow* theViewWindow); + vtkTypeMacro (OrientedPlane, vtkPlane); - SMESH::Orientation myOrientation; - float myDistance; - double myAngle[2]; + QPointer myViewWindow; + SMESH::Orientation myRelativeOrientation; + float myDistance; + double myAngle[2]; + double X, Y, Z, Dx, Dy, Dz; + int myAbsoluteOrientation; + bool IsInvert; + bool IsOpenGLClipping; + Mode PlaneMode; - vtkPlaneSource* myPlaneSource; - SALOME_Actor *myActor; + vtkPlaneSource* myPlaneSource; + SALOME_Actor *myActor; - void SetOrientation (SMESH::Orientation theOrientation) { myOrientation = theOrientation; } - SMESH::Orientation GetOrientation() { return myOrientation; } + void SetOrientation (SMESH::Orientation theOrientation) { myRelativeOrientation = theOrientation; } + SMESH::Orientation GetOrientation() { return myRelativeOrientation; } - void SetDistance (float theDistance) { myDistance = theDistance; } - float GetDistance() { return myDistance; } + void SetDistance (float theDistance) { myDistance = theDistance; } + float GetDistance() { return myDistance; } - void ShallowCopy (OrientedPlane* theOrientedPlane); + void ShallowCopy (OrientedPlane* theOrientedPlane); + OrientedPlane* InvertPlane (); - protected: - OrientedPlane(SVTK_ViewWindow* theViewWindow); - OrientedPlane(); + protected: + OrientedPlane(SVTK_ViewWindow* theViewWindow); + OrientedPlane(); - void Init(); + void Init(); - ~OrientedPlane(); - private: - // Not implemented. - OrientedPlane (const OrientedPlane&); - void operator= (const OrientedPlane&); + ~OrientedPlane(); + private: + // Not implemented. + OrientedPlane (const OrientedPlane&); + void operator= (const OrientedPlane&); }; typedef vtkSmartPointer TPlane; @@ -132,80 +148,127 @@ class SMESHGUI_EXPORT SMESHGUI_ClippingDlg : public QDialog public: SMESHGUI_ClippingDlg( SMESHGUI*, SVTK_ViewWindow* ); ~SMESHGUI_ClippingDlg(); - - double getDistance() const; - void setDistance( const double ); - double getRotation1() const; - double getRotation2() const; - void setRotation( const double, const double ); - - // used in SMESHGUI::restoreVisualParameters() to avoid - // declaration of OrientedPlane outside of SMESHGUI_ClippingDlg.cxx - static SMESH::OrientedPlane* AddPlane (SMESH::TActorList theActorList, - SVTK_ViewWindow* theViewWindow, - SMESH::Orientation theOrientation, - double theDistance, - const vtkFloatingPointType theAngle[2]); - -protected: - void keyPressEvent( QKeyEvent* ); + static bool AddPlane ( SMESH::TActorList theActorList, + SMESH::OrientedPlane* thePlane ); +protected: + void keyPressEvent( QKeyEvent* ); + static void ProcessEvents( vtkObject* theObject, + unsigned long theEvent, + void* theClientData, + void* theCallData); private: - void initializePlaneData(); - - void synchronize(); - - void updateActorList(); - SMESH::TActorList getCurrentActors(); + double getDistance() const; + void setDistance( const double ); + double getRotation1() const; + double getRotation2() const; + void setRotation( const double, const double ); + + void setOrigin(double theVal[3]); + void setDirection(double theVal[3]); + + void initializePlaneData(); + void initParam(); + void synchronize(); + void updateActorList(); + void updateActorItem( QListWidgetItem* theItem, + bool theUpdateSelectAll, + bool theUpdateClippingPlaneMap ); + SMESH::TActorList getCurrentActors(); + + void dumpPlaneData() const; + void absolutePlaneToRelative ( double theOrigin[3], double theDir[3] ); + void setBoundsForPreviewWidget(); + vtkImplicitPlaneWidget* createPreviewWidget(); - void updateActorItem( QListWidgetItem* theItem, - bool theUpdateSelectAll, - bool theUpdateClippingPlaneMap ); - - void dumpPlaneData() const; private: SMESHGUI* mySMESHGUI; SVTK_ViewWindow* myViewWindow; SMESH::TPlaneDataVector myPlanes; + + vtkCallbackCommand* myCallback; + vtkImplicitPlaneWidget* myPreviewWidget; + double myBounds[6]; QComboBox* ComboBoxPlanes; + QCheckBox* isOpenGLClipping; QPushButton* buttonNew; + QMenu* MenuMode; QPushButton* buttonDelete; + QListWidget* ActorList; QCheckBox* SelectAllCheckBox; + + QStackedLayout* ModeStackedLayout; + + QGroupBox* GroupAbsolutePoint; + QLabel* TextLabelX; + QLabel* TextLabelY; + QLabel* TextLabelZ; + QtxDoubleSpinBox* SpinBox_X; + QtxDoubleSpinBox* SpinBox_Y; + QtxDoubleSpinBox* SpinBox_Z; + QPushButton* resetButton; + + QGroupBox* GroupAbsoluteDirection; + QLabel* TextLabelDx; + QLabel* TextLabelDy; + QLabel* TextLabelDz; + QtxDoubleSpinBox* SpinBox_Dx; + QtxDoubleSpinBox* SpinBox_Dy; + QtxDoubleSpinBox* SpinBox_Dz; + QPushButton* invertButton; + QComboBox* CBAbsoluteOrientation; + + QGroupBox* GroupRelative; QLabel* TextLabelOrientation; - QComboBox* ComboBoxOrientation; QLabel* TextLabelDistance; - SMESHGUI_SpinBox* SpinBoxDistance; - QLabel* TextLabelRot1; - SMESHGUI_SpinBox* SpinBoxRot1; - QLabel* TextLabelRot2; - SMESHGUI_SpinBox* SpinBoxRot2; + QLabel* TextLabelRotation1; + QLabel* TextLabelRotation2; + QtxDoubleSpinSlider* SpinSliderDistance; + QtxIntSpinSlider* SpinSliderRotation1; + QtxIntSpinSlider* SpinSliderRotation2; + QComboBox* CBRelativeOrientation; + QCheckBox* PreviewCheckBox; QCheckBox* AutoApplyCheckBox; + QPushButton* buttonOk; QPushButton* buttonCancel; QPushButton* buttonApply; QPushButton* buttonHelp; bool myIsSelectPlane; + bool myIsPreviewMoved; QString myHelpFileName; + SMESH::Mode CurrentMode; + +protected slots: + virtual void reject(); + public slots: - void onSelectPlane( int ); - void ClickOnNew(); - void ClickOnDelete(); - void onActorItemChanged( QListWidgetItem* ); - void onSelectAll( int ); - void onSelectOrientation( int ); - void SetCurrentPlaneParam(); - void OnPreviewToggle( bool ); - void onAutoApply(bool); - void ClickOnOk(); - void ClickOnCancel(); - void ClickOnApply(); - void ClickOnHelp(); + void onModeAbsolute(); + void onModeRelative(); + void ClickOnNew(); + void ClickOnDelete(); + void onSelectPlane( int ); + void onSelectAll( int ); + void onActorItemChanged( QListWidgetItem* ); + void SetCurrentPlaneParam(); + + void onIsOpenGLClipping(bool); + void OnPreviewToggle( bool ); + void onAutoApply(bool); + void ClickOnOk(); + void ClickOnApply(); + void ClickOnHelp(); + + void onSelectAbsoluteOrientation( int ); + void onSelectRelativeOrientation( int ); + void onReset(); + void onInvert(); }; #endif // SMESHGUI_CLIPPINGDLG_H