X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_IViewer.h;h=8e00d69b84def1a8143034bb318788c4c5ec2cf6;hb=06e7f5859095193fc7f498bd89a7d28009794f53;hp=4dce665cee53dc8572cd005d66a81fbd8b3ec3fe;hpb=df51e63f5d87b0c8fa46f5cda0c7c92aad5da888;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_IViewer.h b/src/ModuleBase/ModuleBase_IViewer.h index 4dce665ce..8e00d69b8 100644 --- a/src/ModuleBase/ModuleBase_IViewer.h +++ b/src/ModuleBase/ModuleBase_IViewer.h @@ -1,23 +1,47 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D +// Copyright (C) 2014-2023 CEA, EDF +// +// 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, 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 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// #ifndef ModuleBase_IViewer_H #define ModuleBase_IViewer_H #include "ModuleBase.h" + #include #include #include #include +#include class QMouseEvent; class QKeyEvent; class QContextMenuEvent; class ModuleBase_IViewWindow; +#ifdef HAVE_SALOME +class OCCViewer_Fitter; +#else +class AppElements_Fitter; +#endif /** * \ingroup GUI * A Base object for definition of connector object to - * Salome Viewer. Reimplemented in NewGeom_SalomeViewer class + * Salome Viewer. Reimplemented in SHAPERGUI_SalomeViewer class */ class MODULEBASE_EXPORT ModuleBase_IViewer : public QObject { @@ -30,12 +54,16 @@ Q_OBJECT //! Returns AIS_InteractiveContext from current OCCViewer virtual Handle(AIS_InteractiveContext) AISContext() const = 0; + //! Trihedron 3d object shown in the viewer + virtual Handle(AIS_Trihedron) trihedron() const = 0; + //! Retrurns V3d_Vioewer from current viewer virtual Handle(V3d_Viewer) v3dViewer() const = 0; //! Returns Vsd_View object from currently active view window virtual Handle(V3d_View) activeView() const = 0; + //! Returns currently active view port widget virtual QWidget* activeViewPort() const = 0; //! Enable or disable selection in the viewer @@ -58,6 +86,9 @@ Q_OBJECT //! Perfroms the fit all for the active view virtual void fitAll() = 0; + //! Erases all presentations from the viewer + virtual void eraseAll() = 0; + //! Sets the view projection /// \param theX the X projection value /// \param theY the Y projection value @@ -78,9 +109,6 @@ Q_OBJECT /// \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; @@ -96,14 +124,99 @@ Q_OBJECT /// 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; } + void SetScale(const Handle(V3d_View)& theView, const double theVal) + { myWindowScale[theView] = theVal; } - /// Method returns True if the viewer can process editing objects + /// 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; + //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; + } + + // Methods for color scale management + + //! Returns True if ColorScale is visible + virtual bool isColorScaleVisible() const = 0; + + //! Show/Hide ColorScale object + virtual void setColorScaleShown(bool on) = 0; + + //! Set position of color scale + // \param theX is X position relative to current view width + // \param theY is Y position relative to current view heigth + virtual void setColorScalePosition(double theX, double theY) = 0; + + //! Set size of color scale + // \param theW is width relative to current view width + // \param theh is height relative to current view heigth + virtual void setColorScaleSize(double theW, double theH) = 0; + + //! Set range of color scale + // \param theMin is a minimal value + // \param theMax is a maximal value + virtual void setColorScaleRange(double theMin, double theMax) = 0; + + //! Set number of intervals of color scale + // \param theNb is number of intervals + virtual void setColorScaleIntervals(int theNb) = 0; + + //! Set text heigth of color scale + // \param theH is number of intervals + virtual void setColorScaleTextHeigth(int theH) = 0; + + //! Set color of text of color scale + // \param theH is number of intervals + virtual void setColorScaleTextColor(const QColor& theColor) = 0; + + //! Set title of color scale + // \param theText is a title + virtual void setColorScaleTitle(const QString& theText) = 0; + + //! Type for mapping from text to color to display the names lines in different colors + typedef std::list > > TextColor; + + //! Sets the text displayed in right-top corner of the 3D view + //! \param theText the text to display, or empty string to erase presentation; + //! the first item is the font name and text color + //! \param theSize size of the text font + virtual void setText(const TextColor& theText, const int theSize) = 0; + + + /// Switches On additional highlight for objects preselection + void showSelectionHighlight() { + myShowHighlight = true; + } + + /// Switches Off additional highlight for objects preselection + void hideSelectionHighlight() { + myShowHighlight = false; + } + +#ifdef HAVE_SALOME + virtual void setFitter(OCCViewer_Fitter* theFitter) = 0; + virtual OCCViewer_Fitter* fitter() const = 0; +#else + virtual void setFitter(AppElements_Fitter* theFitter) = 0; + virtual AppElements_Fitter* fitter() const = 0; +#endif + + static Handle(Prs3d_Drawer) DefaultHighlightDrawer; + signals: /// Signal emited when last view window is closed @@ -149,9 +262,16 @@ signals: /// \param theTransformation type of transformation (see AppElements_ViewWindow::OperationType) void viewTransformed(int theTransformation); + /// Signal emited on selection changed + void trihedronVisibilityChanged(bool theState); + protected: /// A map for storing a scale factors dependent on view object QMap myWindowScale; + + bool myIs2dMode; + + bool myShowHighlight; }; #endif