X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FSketcherPrs%2FSketcherPrs_SymbolPrs.h;h=446cedabcd6fb9ad28a0d6c11bf2dadae315579b;hb=64576d3cff0fccdf9f2676044e2b699c9681d9fb;hp=792fde0155d82c6d4d4a0bd6e7e9b3784190761e;hpb=ac584092a432772acf86934ffd6c632f7e992b09;p=modules%2Fshaper.git diff --git a/src/SketcherPrs/SketcherPrs_SymbolPrs.h b/src/SketcherPrs/SketcherPrs_SymbolPrs.h index 792fde015..446cedabc 100644 --- a/src/SketcherPrs/SketcherPrs_SymbolPrs.h +++ b/src/SketcherPrs/SketcherPrs_SymbolPrs.h @@ -7,16 +7,23 @@ #ifndef SketcherPrs_SymbolPrs_H #define SketcherPrs_SymbolPrs_H +#include "SketcherPrs_SensitivePoint.h" +#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,16 +38,47 @@ public: /// Constructor /// \param theConstraint a constraint feature /// \param thePlane a coordinate plane of current sketch - 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); + + Standard_EXPORT std::shared_ptr plane() const { return myPlane; } + + Standard_EXPORT ModelAPI_Feature* feature() const { return myConstraint; } + + + Handle(Graphic3d_ArrayOfPoints) pointsArray() const { return myPntArray; } + + void Render(const Handle(OpenGl_Workspace)& theWorkspace) const; + + void Release (OpenGl_Context* theContext); + 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; @@ -56,9 +94,18 @@ 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; } + protected: /// Constraint feature - SketchPlugin_Constraint* myConstraint; + ModelAPI_Feature* myConstraint; /// Plane of the current sketcher std::shared_ptr myPlane; @@ -66,9 +113,18 @@ protected: /// Aspect for entities drawing Handle(Graphic3d_AspectMarker3d) myAspect; + /// Array of symbols positions + mutable Handle(Graphic3d_ArrayOfPoints) myPntArray; + + Handle(SelectMgr_EntityOwner) myOwner; + private: /// Static map to collect constraints icons {IconName : IconPixMap} static std::map myIconsMap; + + mutable Handle(OpenGl_VertexBuffer) myVboAttribs; + + Select3D_SensitiveEntitySequence mySPoints; }; #endif \ No newline at end of file