Salome HOME
Updated copyright comment
[modules/gui.git] / src / OCCViewer / OCCViewer_ViewWindow.h
old mode 100755 (executable)
new mode 100644 (file)
index 0882497..00a376e
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -34,6 +34,7 @@ class QtxRectRubberBand;
 class SUIT_Desktop;
 class OCCViewer_ViewPort3d;
 class OCCViewer_ViewSketcher;
+class OCCViewer_AutoRotate;
 class OCCViewer_AxialScaleDlg;
 class OCCViewer_SetRotationPointDlg;
 class OCCViewer_Viewer;
@@ -60,8 +61,11 @@ public:
   double   scaleY;
   double   scaleZ;
   QString    name;
+  // trihedron
   bool     isVisible;
   double   size;
+  // view cube
+  bool     vcIsVisible;
   // graduated trihedron
   bool    gtIsVisible;
   bool    gtDrawNameX;
@@ -116,6 +120,7 @@ public:
     name(),
     isVisible( false ),
     size( 0.0 ),
+    vcIsVisible( false ),
     gtIsVisible( false ),
     gtDrawNameX( false ), gtDrawNameY( false ), gtDrawNameZ( false ),
     gtNameX(), gtNameY(), gtNameZ(), 
@@ -143,27 +148,39 @@ class OCCVIEWER_EXPORT OCCViewer_ViewWindow : public SUIT_ViewWindow
   Q_OBJECT
 
 public:
-  enum { DumpId, FitAllId, FitRectId, FitSelectionId, ZoomId, PanId, GlobalPanId,
-         ChangeRotationPointId, RotationId,
-         FrontId, BackId, TopId, BottomId, LeftId, RightId, ClockWiseId, AntiClockWiseId,
-        ResetId, CloneId, ClippingId, MemId, RestoreId,
-         TrihedronShowId, AxialScaleId, GraduatedAxesId, AmbientId,
-        SwitchInteractionStyleId, SwitchZoomingStyleId, 
-        SwitchPreselectionId, SwitchSelectionId,
-        MaximizedId, SynchronizeId, ReturnTo3dViewId,
-        UserId };
-
-  enum OperationType{ NOTHING, PANVIEW, ZOOMVIEW, ROTATE, 
+  enum ActionId { DumpId, FitAllId, FitRectId, FitSelectionId, ZoomId, PanId, GlobalPanId,
+                  ChangeRotationPointId, RotationId,
+                  FrontId, BackId, TopId, BottomId, LeftId, RightId, ClockWiseId, AntiClockWiseId,
+                  ResetId, CloneId, ClippingId, MemId, RestoreId,
+                  TrihedronShowId, AxialScaleId, GraduatedAxesId, AmbientId,
+                  SwitchInteractionStyleId, SwitchZoomingStyleId, 
+                  SwitchPreselectionId, SwitchSelectionId,
+                  MaximizedId, SynchronizeId, ReturnTo3dViewId,
+                  OrthographicId, PerspectiveId, StereoId, RayTracingId, EnvTextureId, LightSourceId,
+                  RectangleSelectionStyleId, PolygonSelectionStyleId, CircleSelectionStyleId,
+                  ViewCubeShowId,
+                  UserId };
+
+  enum OperationType{ NOVIEWOP, PANVIEW, ZOOMVIEW, ROTATE, 
                       PANGLOBAL, WINDOWFIT, FITALLVIEW, FITSELECTION, RESETVIEW,
                       FRONTVIEW, BACKVIEW, TOPVIEW, BOTTOMVIEW, LEFTVIEW, RIGHTVIEW,
-                     CLOCKWISEVIEW, ANTICLOCKWISEVIEW };
+                     CLOCKWISEVIEW, ANTICLOCKWISEVIEW, PROJECTION };
 
-  enum RotationPointType{ GRAVITY, SELECTED };
+  enum RotationPointType{ BBCENTER, SELECTED };
 
   enum SketchingType { NoSketching, Rect, Polygon };
 
-  enum Mode2dType { No2dMode, XYPlane, XZPlane, YZPlane};
+  enum SelectionStyle { RectStyle, PolygonStyle, CyrcleStyle };
 
+  enum Mode2dType { No2dMode, XYPlane, XZPlane, YZPlane };
+
+  enum ProjectionType { Orthographic, Perspective, Stereo };
+  
+  enum StereoType { QuadBuffer, Anaglyph, RowInterlaced, ColumnInterlaced, ChessBoard, SideBySide, OverUnder, SoftPageFlip, NumberOfModes };
+
+  enum AnaglyphFilter { RedCyan, YellowBlue, GreenMagenta };
+
+  enum FocusIODType { Absolute, Relative };
 
   OCCViewer_ViewWindow(SUIT_Desktop* theDesktop, OCCViewer_Viewer* theModel);
   virtual ~OCCViewer_ViewWindow();
@@ -178,6 +195,8 @@ public:
   
   virtual void initLayout();
 
+  virtual bool enableDrawMode( bool );
+
   virtual void updateEnabledDrawMode();
 
   virtual void setCuttingPlane( bool on, const double x = 0 , const double y = 0 , const double z = 0,
@@ -191,7 +210,7 @@ public:
   virtual void      setVisualParameters( const QString& parameters );
 
   virtual void                    initSketchers();
-  virtual OCCViewer_ViewSketcher* getSketcher( const int );
+  virtual OCCViewer_ViewSketcher* getSketcher( const int ) const;
 
   virtual void                    activateSketching( int );
 
@@ -206,10 +225,43 @@ public:
   virtual bool                    isSelectionEnabled() const;
   virtual void                    enableSelection( bool );
  
+  virtual int                     projectionType() const;
+  virtual void                    setProjectionType( int );
+
+  virtual SelectionStyle          selectionStyle() const;
+  virtual void                    setSelectionStyle(SelectionStyle);
+
+  virtual int                     stereoType() const;
+  virtual void                    setStereoType( const int );
+
+  virtual int                     anaglyphFilter() const;
+  virtual void                    setAnaglyphFilter( const int );
+
+  virtual void                    setStereographicFocus( const int, const double );
+  virtual int                     stereographicFocusType() const;
+  virtual double                  stereographicFocusValue() const;
+
+  virtual void                    setInterocularDistance( const int, const double );
+  virtual int                     interocularDistanceType() const;
+  virtual double                  interocularDistanceValue() const;
+
+  virtual bool                    isReverseStereo() const;
+  virtual void                    setReverseStereo( const bool );
+
+  virtual bool                    isVSync() const;
+  virtual void                    setVSync( const bool );
+
+  virtual bool                    isQuadBufferSupport() const;
+  virtual void                    setQuadBufferSupport( const bool );
+
+  virtual bool                    isAutomaticZoom() const;
+  virtual void                    setAutomaticZoom( const bool );
+
+  virtual void                    enableAutoRotation( const bool );
+
   void setTransformEnabled( const OperationType, const bool );
   bool transformEnabled( const OperationType ) const;
 
-
   void            set2dMode( Mode2dType );
   Mode2dType      get2dMode() const { return my2dMode; }
 
@@ -235,6 +287,11 @@ public:
 
   virtual SUIT_CameraProperties   cameraProperties();
 
+  bool isActionVisible( ActionId theId ) const;
+  void setActionVisible( ActionId theId, bool isVisible );
+
+  void resetState();
+
 public slots:
   virtual void onFrontView();
   virtual void onViewFitAll();
@@ -246,6 +303,9 @@ public slots:
   virtual void onRightView();
   virtual void onClockWiseView();
   virtual void onAntiClockWiseView();
+  virtual void onProjectionType( QAction* theAction );
+  virtual void onStereoType( bool activate );
+  virtual void onProjectionType();
   virtual void onResetView();
   virtual void onFitAll();
   virtual void onFitSelection();
@@ -262,11 +322,17 @@ public slots:
   virtual void onMemorizeView();
   virtual void onRestoreView();
   virtual void onTrihedronShow(bool);
+  virtual void onViewCubeShow(bool);
   virtual void setRestoreFlag();
   virtual void onSwitchInteractionStyle( bool on );
   virtual void onSwitchZoomingStyle( bool on );
   virtual void onSwitchPreselection( bool on );
   virtual void onSwitchSelection( bool on );
+  virtual void onSwitchSelectionStyle(QAction* theAction);
+  virtual void onRayTracing();
+  virtual void onEnvTexture();
+  virtual void onLightSource();
+  virtual void onPanning();
 
   virtual void activateSetRotationGravity();
   virtual void activateSetRotationSelected( double theX, double theY, double theZ );
@@ -299,6 +365,8 @@ public:
 protected:
   virtual QString  filter() const;
 
+  bool isOpenGlStereoSupport() const;
+
   /* Transformation selected but not started yet */
   bool transformRequested() const;
   bool setTransformRequested ( OperationType );
@@ -311,19 +379,20 @@ protected:
   void vpMouseReleaseEvent(QMouseEvent* theEvent);
   void vpMouseMoveEvent(QMouseEvent* theEvent);
 
-  void resetState();
   void drawRect();
   void endDrawRect();
 
   void createActions();
   void createToolBar();
+
   virtual OperationType getButtonState(QMouseEvent* theEvent, int theInteractionStyle);
 
   viewAspect getViewParams() const;
 
   bool computeGravityCenter( double& theX, double& theY, double& theZ );
 
+  void projAndPanToGravity(V3d_TypeOfOrientation CamOri);
+
   virtual void                          onSketchingStarted();
   virtual void                          onSketchingFinished();
 
@@ -347,21 +416,24 @@ protected:
   gp_Pnt                mySelectedPoint;
   bool                  myRotationPointSelection;
 
-  int                                   myRestoreFlag;
+  int                   myRestoreFlag;
 
-  int                                   myStartX;
-  int                                   myStartY;
-  int                                   myCurrX;
-  int                                   myCurrY;
+  int                   myStartX;
+  int                   myStartY;
+  qint64                myStartTime;          
+  int                   myCurrX;
+  int                   myCurrY;
+  qint64                myCurrTime;          
 
   bool                  myEventStarted;       // set when transformation is in process 
   bool                  myCursorIsHand;                 
   bool                  myDrawRect;           // set when a rect is used for selection or magnify 
   bool                  myEnableDrawMode;
+  bool                  myDrawRectEnabled;
   bool                  myPaintersRedrawing;  // set to draw with external painters  
   bool                  IsSketcherStyle;
   bool                  myIsKeyFree;
-  
+  bool                  myAutomaticZoom;
   QCursor               myCursor;
 
   double myCurScale;
@@ -374,6 +446,8 @@ private:
 
   QtxRectRubberBand* myRectBand; //!< selection rectangle rubber band
 
+  OCCViewer_AutoRotate *myAutoRotate;
+
   bool mySelectionEnabled;
   bool myPreselectionEnabled;
   int myInteractionStyle;
@@ -386,6 +460,7 @@ private:
   Handle(V3d_Plane) myReserveClipPlane;
 
   viewAspectList myViewAspects;
+  bool myPanningByBtn;
 };
 
 #ifdef WIN32