+ /// 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;
+
+ /// 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;
+
+ /// Show highlight for pre-highlighted sub-shape
+ virtual void updateHighlight() {}
+
+ /// Set flag which indicates that viewer is used for 2d operations
+ /// \param is2d a new 2d mode state
+ void set2dMode(bool is2d) {
+ myIs2dMode = is2d;
+ }
+
+ /// Returns current state of 2d mode flag
+ bool is2dMode() const {
+ return myIs2dMode;
+ }
+
+ static Handle(Prs3d_Drawer) DefaultHighlightDrawer;