#include <TCollection_AsciiString.hxx>
-#include <InterfaceGraphic_Graphic3d.hxx>
-#include <Aspect_TypeOfLine.hxx>
-#include <Graphic3d_CAspectLine.hxx>
-
-#include <Handle_OpenGl_ShaderProgram.hxx>
-
+#include <Graphic3d_AspectLine3d.hxx>
#include <OpenGl_Element.hxx>
+class OpenGl_ShaderProgram;
+
+//! The element holding Graphic3d_AspectLine3d.
class OpenGl_AspectLine : public OpenGl_Element
{
public:
+ //! Empty constructor.
Standard_EXPORT OpenGl_AspectLine();
- Standard_EXPORT OpenGl_AspectLine (const OpenGl_AspectLine &AnOther);
+ //! Create and assign line aspect.
+ Standard_EXPORT OpenGl_AspectLine (const Handle(Graphic3d_AspectLine3d)& theAspect);
- Standard_EXPORT void SetAspect (const CALL_DEF_CONTEXTLINE& theAspect);
+ //! Return line aspect.
+ const Handle(Graphic3d_AspectLine3d)& Aspect() const { return myAspect; }
- const TEL_COLOUR& Color() const { return myColor; }
- TEL_COLOUR& ChangeColor() { return myColor; }
- Aspect_TypeOfLine Type() const { return myType; }
- float Width() const { return myWidth; }
+ //! Assign line aspect.
+ Standard_EXPORT void SetAspect (const Handle(Graphic3d_AspectLine3d)& theAspect);
//! Init and return OpenGl shader program resource.
//! @return shader program resource.
{
if (!myResources.IsShaderReady())
{
- myResources.BuildShader (theCtx, myShaderProgram);
+ myResources.BuildShader (theCtx, myAspect->ShaderProgram());
myResources.SetShaderReady();
}
return myResources.ShaderProgram;
}
- Standard_EXPORT virtual void Render (const Handle(OpenGl_Workspace)& theWorkspace) const;
- Standard_EXPORT virtual void Release (OpenGl_Context* theContext);
-
-protected:
+ Standard_EXPORT virtual void Render (const Handle(OpenGl_Workspace)& theWorkspace) const Standard_OVERRIDE;
+ Standard_EXPORT virtual void Release (OpenGl_Context* theContext) Standard_OVERRIDE;
- TEL_COLOUR myColor;
- Aspect_TypeOfLine myType;
- float myWidth;
- Handle(Graphic3d_ShaderProgram) myShaderProgram;
+ //! Update presentation aspects parameters after their modification.
+ virtual void SynchronizeAspects() Standard_OVERRIDE { SetAspect (myAspect); }
protected:
Standard_Boolean myIsShaderReady;
} myResources;
+ Handle(Graphic3d_AspectLine3d) myAspect;
public:
DEFINE_STANDARD_ALLOC