X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketcherPrs%2FSketcherPrs_SymbolPrs.h;h=1f8894f174c0da0f48c0300737aeadd8a6775a4f;hb=e67f27dc909fe58f932c551e030319ae0930db6e;hp=6cce9503e6e7bdc97b27fc3ca0913ed4142fa7f6;hpb=ec6aaa4d8bd3609b04ea85683e1b1175b6632238;p=modules%2Fshaper.git diff --git a/src/SketcherPrs/SketcherPrs_SymbolPrs.h b/src/SketcherPrs/SketcherPrs_SymbolPrs.h index 6cce9503e..1f8894f17 100644 --- a/src/SketcherPrs/SketcherPrs_SymbolPrs.h +++ b/src/SketcherPrs/SketcherPrs_SymbolPrs.h @@ -7,16 +7,24 @@ #ifndef SketcherPrs_SymbolPrs_H #define SketcherPrs_SymbolPrs_H +#include "SketcherPrs_SensitivePoint.h" +#include +#include + #include #include #include #include #include +#include +#include #include #include -class SketchPlugin_Constraint; +#include + +class OpenGl_Context; DEFINE_STANDARD_HANDLE(SketcherPrs_SymbolPrs, AIS_InteractiveObject) @@ -31,20 +39,55 @@ public: /// Constructor /// \param theConstraint a constraint feature /// \param thePlane a coordinate plane of current sketch - Standard_EXPORT SketcherPrs_SymbolPrs(SketchPlugin_Constraint* theConstraint, + Standard_EXPORT SketcherPrs_SymbolPrs(ModelAPI_Feature* theConstraint, const std::shared_ptr& thePlane); + virtual ~SketcherPrs_SymbolPrs(); + //! Method which clear all selected owners belonging //! to this selectable object ( for fast presentation draw ) Standard_EXPORT virtual void ClearSelected(); + + //! Method which draws selected owners ( for fast presentation draw ) + Standard_EXPORT virtual void HilightSelected(const Handle(PrsMgr_PresentationManager3d)& thePM, + const SelectMgr_SequenceOfOwner& theOwners); + + //! Method which hilight an owner belonging to + //! this selectable object ( for fast presentation draw ) + Standard_EXPORT virtual void HilightOwnerWithColor(const Handle(PrsMgr_PresentationManager3d)& thePM, + const Quantity_NameOfColor theColor, const Handle(SelectMgr_EntityOwner)& theOwner); + + /// Returns sketcher plane Standard_EXPORT std::shared_ptr plane() const { return myPlane; } - Standard_EXPORT SketchPlugin_Constraint* feature() const { return myConstraint; } + /// Returns feature object + Standard_EXPORT ModelAPI_Feature* feature() const { return myConstraint; } + + /// Return array of points where symbols will be placed + const Handle(Graphic3d_ArrayOfPoints)& pointsArray() const { return myPntArray; } + + /// Render of the presentation + /// \param theWorkspace is OpenGl workspace + void Render(const Handle(OpenGl_Workspace)& theWorkspace) const; + + /// Release used OpenGl resources + /// \param theContext is an OpenGL context + void Release (OpenGl_Context* theContext); + + Standard_EXPORT virtual void BoundingBox (Bnd_Box& theBndBox) Standard_OVERRIDE; DEFINE_STANDARD_RTTI(SketcherPrs_SymbolPrs) protected: + /// Redefinition of virtual function + Standard_EXPORT virtual void Compute(const Handle(PrsMgr_PresentationManager3d)& thePresentationManager, + const Handle(Prs3d_Presentation)& thePresentation, const Standard_Integer theMode = 0); + + /// Redefinition of virtual function + Standard_EXPORT virtual void ComputeSelection(const Handle(SelectMgr_Selection)& aSelection, + const Standard_Integer aMode); + /// Returns an icon file name. Has to be redefined in successors virtual const char* iconName() const = 0; @@ -60,9 +103,30 @@ protected: /// \param theAttrName an attribute name which corresponds to referenced line void addLine(const Handle(Graphic3d_Group)& theGroup, std::string theAttrName) const; + /// Redefine this function in order to add additiona lines of constraint base + /// \param thePrs a presentation + /// \param theColor a color of additiona lines + virtual void drawLines(const Handle(Prs3d_Presentation)& thePrs, Quantity_Color theColor) const {} + + /// Update myPntArray according to presentation positions + /// \return true in case of success + virtual bool updatePoints(double theStep) const { return true; } + + /// Draw a shape into the given presentation scene + /// \param theShape the shape to draw + /// \param thePrs the presentation scene + void drawShape(const std::shared_ptr& theShape, + const Handle(Prs3d_Presentation)& thePrs) const; + + /// Draw a list of shapes stored in a RefListAttribute + /// \param theListAttr the attribute of reference3s list + /// \param thePrs the presentation scene + void drawListOfShapes(const std::shared_ptr& theListAttr, + const Handle(Prs3d_Presentation)& thePrs) const; + protected: /// Constraint feature - SketchPlugin_Constraint* myConstraint; + ModelAPI_Feature* myConstraint; /// Plane of the current sketcher std::shared_ptr myPlane; @@ -70,9 +134,19 @@ protected: /// Aspect for entities drawing Handle(Graphic3d_AspectMarker3d) myAspect; + /// Array of symbols positions + mutable Handle(Graphic3d_ArrayOfPoints) myPntArray; + + /// An owner object of the presentation + Handle(SelectMgr_EntityOwner) myOwner; + private: /// Static map to collect constraints icons {IconName : IconPixMap} static std::map myIconsMap; + + mutable Handle(OpenGl_VertexBuffer) myVboAttribs; + + Select3D_EntitySequence mySPoints; }; #endif \ No newline at end of file