SHAPER  9.12.0
SketcherPrs_SymbolPrs.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 SketcherPrs_SymbolPrs_H
21 #define SketcherPrs_SymbolPrs_H
22 
23 #include "SketcherPrs_SensitivePoint.h"
24 #include <SketchPlugin_Sketch.h>
25 #include <ModelAPI_Feature.h>
26 #include <ModelAPI_AttributeRefList.h>
27 
28 #include <AIS_InteractiveObject.hxx>
29 #include <GeomAPI_Ax3.h>
30 #include <Graphic3d_ArrayOfPoints.hxx>
31 #include <Graphic3d_AspectMarker3d.hxx>
32 #include <Image_AlienPixMap.hxx>
33 #include <SelectMgr_EntityOwner.hxx>
34 #include <Select3D_EntitySequence.hxx>
35 
36 #include <Standard_DefineHandle.hxx>
37 #include <map>
38 
39 #include <OpenGl_Workspace.hxx>
40 
41 class OpenGl_Context;
42 
43 
44 DEFINE_STANDARD_HANDLE(SketcherPrs_SymbolPrs, AIS_InteractiveObject)
45 
52 {
53 public:
57  Standard_EXPORT SketcherPrs_SymbolPrs(ModelAPI_Feature* theConstraint,
58  SketchPlugin_Sketch* theSketcher);
59 
60  virtual ~SketcherPrs_SymbolPrs();
61 
63  Standard_EXPORT virtual void HilightSelected(const Handle(PrsMgr_PresentationManager3d)& thePM,
64  const SelectMgr_SequenceOfOwner& theOwners);
65 
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 std::shared_ptr<GeomAPI_Ax3> plane() const
74  {
75  return mySketcher->coordinatePlane();
76  }
77 
79  Standard_EXPORT ModelAPI_Feature* feature() const { return myConstraint; }
80 
82  Standard_EXPORT ModelAPI_CompositeFeature* sketcher() const { return mySketcher; }
83 
85  const Handle(Graphic3d_ArrayOfPoints)& pointsArray() const { return myPntArray; }
86 
91  Standard_EXPORT void SetCustomColor(const std::vector<int>& theColor);
92 
95  Standard_EXPORT virtual void BoundingBox (Bnd_Box& theBndBox) Standard_OVERRIDE;
96 
97  DEFINE_STANDARD_RTTIEXT(SketcherPrs_SymbolPrs, AIS_InteractiveObject)
98 
99 protected:
101  Standard_EXPORT virtual void Compute(
102  const Handle(PrsMgr_PresentationManager3d)& thePresentationManager,
103  const Handle(Prs3d_Presentation)& thePresentation, const Standard_Integer theMode = 0);
104 
108  Standard_EXPORT virtual void ComputeSelection(const Handle(SelectMgr_Selection)& aSelection,
109  const Standard_Integer aMode);
110 
112  virtual const char* iconName() const = 0;
113 
116  virtual void prepareAspect();
117 
119  Handle(Image_AlienPixMap) icon();
120 
124  void addLine(const Handle(Graphic3d_Group)& theGroup, std::string theAttrName) const;
125 
129  virtual void drawLines(const Handle(Prs3d_Presentation)& /*thePrs*/,
130  Quantity_Color /*theColor*/) const {}
131 
134  virtual bool updateIfReadyToDisplay(double /*theStep*/, bool /*withColor*/) const { return true; }
135 
139  void drawShape(const std::shared_ptr<GeomAPI_Shape>& theShape,
140  const Handle(Prs3d_Presentation)& thePrs, Quantity_Color theColor) const;
141 
145  void drawListOfShapes(const std::shared_ptr<ModelAPI_AttributeRefList>& theListAttr,
146  const Handle(Prs3d_Presentation)& thePrs, Quantity_Color theColor) const;
147 
148 protected:
151 
154 
156  Handle(Graphic3d_AspectMarker3d) myAspect;
157 
159  mutable Handle(Graphic3d_ArrayOfPoints) myPntArray;
160 
162  Handle(SelectMgr_EntityOwner) myOwner;
163 
164 private:
166  static std::map<const char*, Handle(Image_AlienPixMap)> myIconsMap;
167 
168  Select3D_EntitySequence mySPoints;
169 
170  bool myIsCustomColor;
171  Quantity_Color myCustomColor;
172 
173  //bool myIsConflicting; /// state if the presentation is visualized in error state
174  Handle(Image_AlienPixMap) myErrorIcon;
175  Handle(Graphic3d_MarkerImage) myErrorImage;
176 
177  friend class SketcherPrs_SymbolArray;
178 };
179 
180 #endif
Feature that consists of other features: like sketcher with edges inside.
Definition: ModelAPI_CompositeFeature.h:33
Feature function that represents the particular functionality of this operation.
Definition: ModelAPI_Feature.h:39
Feature for creation of the new part in PartSet.
Definition: SketchPlugin_Sketch.h:47
std::shared_ptr< GeomAPI_Ax3 > coordinatePlane() const
Returns currently defined plane as an object of Ax3.
Definition: SketchPlugin_Sketch.h:170
Redefinition of OpenGl_Element.
Definition: SketcherPrs_SymbolPrs.cpp:67
A base class of constraint presentation which is represented by an icon.
Definition: SketcherPrs_SymbolPrs.h:52
void SetCustomColor(const std::vector< int > &theColor)
Set state of the presentation, in case of conflicting state, the icon of the presentation is visualiz...
Definition: SketcherPrs_SymbolPrs.cpp:347
virtual void prepareAspect()
Check and creates if it is necessary myAspect member.
Definition: SketcherPrs_SymbolPrs.cpp:207
void drawListOfShapes(const std::shared_ptr< ModelAPI_AttributeRefList > &theListAttr, const Handle &&thePrs, Quantity_Color theColor) const
Draw a list of shapes stored in a RefListAttribute.
Definition: SketcherPrs_SymbolPrs.cpp:414
void addLine(const Handle &&theGroup, std::string theAttrName) const
Add a line into the given group.
Definition: SketcherPrs_SymbolPrs.cpp:222
virtual void HilightOwnerWithColor(const Handle &&thePM, const Handle &&theStyle, const Handle &&theOwner)
Method which hilight an owner belonging to.
Definition: SketcherPrs_SymbolPrs.cpp:255
ModelAPI_CompositeFeature * sketcher() const
Returns Sketcher object (owner of the constraint)
Definition: SketcherPrs_SymbolPrs.h:82
std::shared_ptr< GeomAPI_Ax3 > plane() const
Returns sketcher plane.
Definition: SketcherPrs_SymbolPrs.h:73
SketcherPrs_SymbolPrs(ModelAPI_Feature *theConstraint, SketchPlugin_Sketch *theSketcher)
Constructor.
Definition: SketcherPrs_SymbolPrs.cpp:120
ModelAPI_Feature * feature() const
Returns feature object.
Definition: SketcherPrs_SymbolPrs.h:79
void drawShape(const std::shared_ptr< GeomAPI_Shape > &theShape, const Handle &&thePrs, Quantity_Color theColor) const
Draw a shape into the given presentation scene.
Definition: SketcherPrs_SymbolPrs.cpp:373
const Handle && pointsArray() const
Return array of points where symbols will be placed.
Definition: SketcherPrs_SymbolPrs.h:85
ModelAPI_Feature * myConstraint
Constraint feature.
Definition: SketcherPrs_SymbolPrs.h:150
virtual bool updateIfReadyToDisplay(double, bool) const
Update myPntArray according to presentation positions.
Definition: SketcherPrs_SymbolPrs.h:134
SketchPlugin_Sketch * mySketcher
Sketcher feature.
Definition: SketcherPrs_SymbolPrs.h:153
virtual const char * iconName() const =0
Returns an icon file name. Has to be redefined in successors.
virtual void drawLines(const Handle &&, Quantity_Color) const
Redefine this function in order to add additiona lines of constraint base.
Definition: SketcherPrs_SymbolPrs.h:129
virtual DEFINE_STANDARD_RTTIEXT(SketcherPrs_SymbolPrs, AIS_InteractiveObject) protected void ComputeSelection(const Handle &&aSelection, const Standard_Integer aMode)
Redefinition of virtual function.
Definition: SketcherPrs_SymbolPrs.cpp:336
virtual void BoundingBox(Bnd_Box &theBndBox) Standard_OVERRIDE
Add a bounding box of the presentation to common bounding box.
Definition: SketcherPrs_SymbolPrs.cpp:432
virtual void HilightSelected(const Handle &&thePM, const SelectMgr_SequenceOfOwner &theOwners)
Method which draws selected owners ( for fast presentation draw )
Definition: SketcherPrs_SymbolPrs.cpp:242