-// 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
class SUIT_Desktop;
class OCCViewer_ViewPort3d;
class OCCViewer_ViewSketcher;
+class OCCViewer_AutoRotate;
class OCCViewer_AxialScaleDlg;
class OCCViewer_SetRotationPointDlg;
class OCCViewer_Viewer;
double scaleY;
double scaleZ;
QString name;
+ // trihedron
bool isVisible;
double size;
+ // view cube
+ bool vcIsVisible;
// graduated trihedron
bool gtIsVisible;
bool gtDrawNameX;
name(),
isVisible( false ),
size( 0.0 ),
+ vcIsVisible( false ),
gtIsVisible( false ),
gtDrawNameX( false ), gtDrawNameY( false ), gtDrawNameZ( false ),
gtNameX(), gtNameY(), gtNameZ(),
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,
- OrthographicId, PerspectiveId, StereoId,
- 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, PROJECTION };
- enum RotationPointType{ GRAVITY, SELECTED };
+ enum RotationPointType{ BBCENTER, SELECTED };
enum SketchingType { NoSketching, Rect, Polygon };
+ enum SelectionStyle { RectStyle, PolygonStyle, CyrcleStyle };
+
enum Mode2dType { No2dMode, XYPlane, XZPlane, YZPlane };
enum ProjectionType { Orthographic, Perspective, Stereo };
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,
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 );
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 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;
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();
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 );
void vpMouseReleaseEvent(QMouseEvent* theEvent);
void vpMouseMoveEvent(QMouseEvent* theEvent);
- void resetState();
void drawRect();
void endDrawRect();
bool computeGravityCenter( double& theX, double& theY, double& theZ );
+ void projAndPanToGravity(V3d_TypeOfOrientation CamOri);
+
virtual void onSketchingStarted();
virtual void onSketchingFinished();
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;
QtxRectRubberBand* myRectBand; //!< selection rectangle rubber band
+ OCCViewer_AutoRotate *myAutoRotate;
+
bool mySelectionEnabled;
bool myPreselectionEnabled;
int myInteractionStyle;
Handle(V3d_Plane) myReserveClipPlane;
viewAspectList myViewAspects;
+ bool myPanningByBtn;
};
#ifdef WIN32