SHAPER  9.12.0
ModuleBase_ResultPrs.h
1 // Copyright (C) 2014-2023 CEA, EDF
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19 
20 #ifndef ModuleBase_ResultPrs_H
21 #define ModuleBase_ResultPrs_H
22 
23 #include "ModuleBase.h"
24 
25 #include <ModelAPI_Result.h>
26 #include <ModelAPI_ResultField.h>
27 
28 #include <BRep_Builder.hxx>
29 #include <NCollection_List.hxx>
30 #include <ViewerData_AISShape.hxx>
31 #include <Standard_DefineHandle.hxx>
32 #include <TopoDS_Compound.hxx>
33 #include <Prs3d_IsoAspect.hxx>
34 
35 #include <QMap>
36 
37 class AIS_ColoredDrawer;
39 
40 DEFINE_STANDARD_HANDLE(ModuleBase_ResultPrs, ViewerData_AISShape)
41 
42 
48 {
49 public:
50  enum SelectionModes {
51  Sel_Result = TopAbs_SHAPE + 1
54  };
55 
56 public:
59  Standard_EXPORT ModuleBase_ResultPrs(ResultPtr theResult);
60 
62  Standard_EXPORT virtual void HilightSelected(const Handle(PrsMgr_PresentationManager3d)& thePM,
63  const SelectMgr_SequenceOfOwner& theOwners);
64 
67  Standard_EXPORT virtual void HilightOwnerWithColor(
68  const Handle(PrsMgr_PresentationManager3d)& thePM,
69  const Handle(Prs3d_Drawer)& theStyle,
70  const Handle(SelectMgr_EntityOwner)& theOwner);
71 
73  Standard_EXPORT ResultPtr getResult() const { return myResult; }
74 
77  Standard_EXPORT int getAdditionalSelectionPriority() const
78  { return myAdditionalSelectionPriority; }
79 
83  Standard_EXPORT void setAdditionalSelectionPriority(const int thePriority);
84 
86  Standard_EXPORT virtual void SetColor (const Quantity_Color& theColor);
87 
95  Standard_EXPORT void setSubShapeHidden(const TopoDS_ListOfShape& theShapes);
96 
100  Standard_EXPORT bool isSubShapeHidden(const TopoDS_Shape& theShape);
101 
103  Standard_EXPORT const TopoDS_ListOfShape& hiddenSubShapes() const
104  { return myHiddenSubShapes; }
105 
109  Standard_EXPORT bool hasSubShapeVisible(const TopoDS_ListOfShape& theShapesToSkip);
110 
114  Standard_EXPORT bool setHiddenSubShapeTransparency(double theTransparency);
115 
117  Standard_EXPORT TopoDS_Shape originalShape() const { return myOriginalShape; }
118 
120  Standard_EXPORT bool isSubstituted() const { return myIsSubstituted; }
121 
122  Standard_EXPORT void updateIsoLines();
123 
124  DEFINE_STANDARD_RTTIEXT(ModuleBase_ResultPrs, ViewerData_AISShape)
125 
126 protected:
128  Standard_EXPORT virtual void Compute(
129  const Handle(PrsMgr_PresentationManager3d)& thePresentationManager,
130  const Handle(Prs3d_Presentation)& thePresentation, const Standard_Integer theMode = 0);
131 
133  Standard_EXPORT virtual void ComputeSelection(const Handle(SelectMgr_Selection)& aSelection,
134  const Standard_Integer theMode) ;
135 
136 private:
143  bool appendVertexSelection(const Handle(SelectMgr_Selection)& aSelection,
144  const Standard_Integer theMode);
145 
154  void collectSubShapes(BRep_Builder& theBuilder, TopoDS_Shape& theCompound,
155  const TopoDS_Shape& theShape, const TopoDS_ListOfShape& theHiddenSubShapes);
156 
157  void setEdgesDefaultColor();
158 
159 private:
161  ResultPtr myResult;
162 
164  TopoDS_Shape myOriginalShape;
165 
166  bool myIsSubstituted;
167 
169  TopoDS_ListOfShape myHiddenSubShapes;
170  TopoDS_Compound myVisibleCompound;
171  TopoDS_Compound myHiddenCompound;
172  double myTransparency;
173  Handle(AIS_ColoredDrawer) myHiddenSubShapesDrawer;
174 
177  int myAdditionalSelectionPriority;
178 
179  Handle(Prs3d_IsoAspect) myUIsoAspect;
180  Handle(Prs3d_IsoAspect) myVIsoAspect;
181 };
182 
183 
184 #endif
A redefinition of standard AIS Interactive Object in order to provide specific behaviour for wire pre...
Definition: ModuleBase_ResultPrs.h:48
TopoDS_Shape originalShape() const
Returns the original shape of the presentation.
Definition: ModuleBase_ResultPrs.h:117
bool isSubstituted() const
Returns True if the original shape is substituted by a corresponded shell.
Definition: ModuleBase_ResultPrs.h:120
const TopoDS_ListOfShape & hiddenSubShapes() const
Returns hidden sub shapes list.
Definition: ModuleBase_ResultPrs.h:103
ResultPtr getResult() const
Returns result object.
Definition: ModuleBase_ResultPrs.h:73
int getAdditionalSelectionPriority() const
Returns selection priorities that will be added to created selection owner.
Definition: ModuleBase_ResultPrs.h:77