X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_IViewer.h;h=7547d6c1f33ddb89ba67c065e9585ba3540af8e2;hb=7cb6ac084270943d926ec7ef35bf9e63d6a3eaf5;hp=c84a7d0582a8d58cae71e96ba12aaa443493fec4;hpb=b0782eb7d6c01174bd34cccd871078eb94259b5a;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_IViewer.h b/src/ModuleBase/ModuleBase_IViewer.h index c84a7d058..7547d6c1f 100644 --- a/src/ModuleBase/ModuleBase_IViewer.h +++ b/src/ModuleBase/ModuleBase_IViewer.h @@ -5,6 +5,7 @@ #include "ModuleBase.h" #include +#include #include #include @@ -14,6 +15,7 @@ class QContextMenuEvent; class ModuleBase_IViewWindow; /** + * \ingroup GUI * A Base object for definition of connector object to * Salome Viewer. Reimplemented in NewGeom_SalomeViewer class */ @@ -23,10 +25,7 @@ Q_OBJECT public: /// Constructor /// \param theParent a parent object - ModuleBase_IViewer(QObject* theParent) - : QObject(theParent) - { - } + ModuleBase_IViewer(QObject* theParent); //! Returns AIS_InteractiveContext from current OCCViewer virtual Handle(AIS_InteractiveContext) AISContext() const = 0; @@ -58,7 +57,9 @@ Q_OBJECT /// \param theX the X projection value /// \param theY the Y projection value /// \param theZ the Z projection value - virtual void setViewProjection(double theX, double theY, double theZ) = 0; + /// \param theTwist the twist angle in radians + virtual void setViewProjection( double theX, double theY, double theZ, + double theTwist ) = 0; /// Add selection filter to the viewer /// \param theFilter a selection filter @@ -68,12 +69,37 @@ Q_OBJECT /// \param theFilter a selection filter virtual void removeSelectionFilter(const Handle(SelectMgr_Filter)& theFilter) = 0; + /// Returns true if the selection filter is set to the viewer + /// \param theFilter a selection filter + virtual bool hasSelectionFilter(const Handle(SelectMgr_Filter)& theFilter) = 0; + /// Remove all selection filters from the viewer virtual void clearSelectionFilters() = 0; /// Update current viewer virtual void update() = 0; + /// Returns a scale factor of the given view + /// \param theView a view object + const double Scale(const Handle(V3d_View)& theView) + { + if (!myWindowScale.contains(theView)) + myWindowScale.insert(theView, theView->Camera()->Scale()); + return myWindowScale[theView]; + } + + /// Remember a scale factor for the view object + /// \param theView a view object + /// \param theVal a scale factor + void SetScale(const Handle(V3d_View)& theView, const double theVal) { myWindowScale[theView] = theVal; } + + /// Method returns True if the viewer can process editing objects + /// by mouse drugging. If this is impossible thet it has to return False. + virtual bool canDragByMouse() const { return true; } + + /// Fit all along Z (perpendicular to display) + virtual void Zfitall() = 0; + signals: /// Signal emited when last view window is closed void lastViewClosed(); @@ -113,6 +139,14 @@ signals: /// Signal emited on selection changed void contextMenuRequested(QContextMenuEvent*); + + /// Signal emitted on transformation of view point in view window + /// \param theTransformation type of transformation (see AppElements_ViewWindow::OperationType) + void viewTransformed(int theTransformation); + + protected: + /// A map for storing a scale factors dependent on view object + QMap myWindowScale; }; #endif