X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_ResultPrs.h;h=aba95061e1c4ca66e0cb734c1871389a8fb2d8c5;hb=59610176acaef6df307f9a2ec24fe3a14bfaef0b;hp=e95018a7933bd2b4b002004943f0015c8801c8a8;hpb=613e672654df0f1e6838fb55b384842ce534809a;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_ResultPrs.h b/src/ModuleBase/ModuleBase_ResultPrs.h index e95018a79..aba95061e 100644 --- a/src/ModuleBase/ModuleBase_ResultPrs.h +++ b/src/ModuleBase/ModuleBase_ResultPrs.h @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2017 CEA/DEN, EDF R&D +// Copyright (C) 2014-2021 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -12,10 +12,9 @@ // // 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 +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or -// email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef ModuleBase_ResultPrs_H @@ -24,13 +23,20 @@ #include "ModuleBase.h" #include +#include +#include #include #include #include +#include +#include #include +class AIS_ColoredDrawer; +class AIS_InteractiveContext; + DEFINE_STANDARD_HANDLE(ModuleBase_ResultPrs, ViewerData_AISShape) /** @@ -60,7 +66,7 @@ public: //! this selectable object ( for fast presentation draw ) Standard_EXPORT virtual void HilightOwnerWithColor( const Handle(PrsMgr_PresentationManager3d)& thePM, - const Handle(Graphic3d_HighlightStyle)& theStyle, + const Handle(Prs3d_Drawer)& theStyle, const Handle(SelectMgr_EntityOwner)& theOwner); /// Returns result object @@ -76,6 +82,9 @@ public: /// \param thePriority a new priority value Standard_EXPORT void setAdditionalSelectionPriority(const int thePriority); + //! Updates color of sub shape drawer + Standard_EXPORT virtual void SetColor (const Quantity_Color& theColor); + /// Change presentation to have given shape hidden. /// It suports FACE type of the shape to be hidden. /// If presentation type is greater than FACE, the SHELL with be shown with the FACE hidden @@ -83,12 +92,34 @@ public: /// Visual state of the face is controlled by the second parameter /// \param theShapes a container of shape objects /// \returns true if the presentation is changed, or false (if for example it was hidden) - Standard_EXPORT bool setSubShapeHidden(const NCollection_List& theShapes); + Standard_EXPORT void setSubShapeHidden(const TopoDS_ListOfShape& theShapes); + + /// Returns true if parameter shape has been hidden + /// \param theShape sub-shape of the presentation shape + /// \return boolean value + Standard_EXPORT bool isSubShapeHidden(const TopoDS_Shape& theShape); + + /// Returns hidden sub shapes list + Standard_EXPORT const TopoDS_ListOfShape& hiddenSubShapes() const + { return myHiddenSubShapes; } /// Returns true if there are no hidden sub shapes or original shape has at least one not hidden - /// \param theShapeToSkip the shape should be interpreted as additional hidden in the presentation + /// \param theShapesToSkip container of shape to be hidden in the presentation (faces) /// \return boolean value - Standard_EXPORT bool hasSubShapeVisible(const TopoDS_Shape& theShapeToSkip); + Standard_EXPORT bool hasSubShapeVisible(const TopoDS_ListOfShape& theShapesToSkip); + + /// Set transparency of hidden sub shapes: if value is 1, shapes are entirely hidden + /// \param theTransparency transparency value + /// \return false if parameter is out of [0, 1] + Standard_EXPORT bool setHiddenSubShapeTransparency(double theTransparency); + + /// Returns the original shape of the presentation + Standard_EXPORT TopoDS_Shape originalShape() const { return myOriginalShape; } + + /// Returns True if the original shape is substituted by a corresponded shell + Standard_EXPORT bool isSubstituted() const { return myIsSubstituted; } + + Standard_EXPORT void updateIsoLines(); DEFINE_STANDARD_RTTIEXT(ModuleBase_ResultPrs, ViewerData_AISShape) @@ -112,18 +143,41 @@ private: bool appendVertexSelection(const Handle(SelectMgr_Selection)& aSelection, const Standard_Integer theMode); + /// Creates compound of vertices, edges and faces. + /// If the shape is COMPOUND, iterate by sub-shapes. + /// If the shape is SOLID/SHEL, explore shape by FACES, + /// If the shape is WIRE, explore shape by EDGES + /// \param theBuilder result compound builder + /// \param theCompound the result shape + /// \param theShape the processed shape + /// \param theHiddenSubShapes container of shapes to be skipped (faces) + void collectSubShapes(BRep_Builder& theBuilder, TopoDS_Shape& theCompound, + const TopoDS_Shape& theShape, const TopoDS_ListOfShape& theHiddenSubShapes); + + void setEdgesDefaultColor(); + +private: /// Reference to result object ResultPtr myResult; /// Original shape of the result object TopoDS_Shape myOriginalShape; + bool myIsSubstituted; + /// Container of original Shape sub shape to be hidden and not selectable - NCollection_List myHiddenSubShapes; + TopoDS_ListOfShape myHiddenSubShapes; + TopoDS_Compound myVisibleCompound; /// compound of hidden sub shapes + TopoDS_Compound myHiddenCompound; /// compound of hidden sub shapes + double myTransparency; ///< transparency of hidden shapes, where 0 - there is no transparency + Handle(AIS_ColoredDrawer) myHiddenSubShapesDrawer; ///< drawer for hidden sub shapes /// selection priority that will be added to the standard /// selection priority of the selection entity int myAdditionalSelectionPriority; + + Handle(Prs3d_IsoAspect) myUIsoAspect; + Handle(Prs3d_IsoAspect) myVIsoAspect; };