0030153: Visualization, TKOpenGl - AIS_ColoredShape::SynchronizeAspects() doesn't...
[occt.git] / src / OpenGl / OpenGl_AspectLine.hxx
index 68b5485..a44bd54 100644 (file)
 
 #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.
@@ -47,22 +46,18 @@ public:
   {
     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:
 
@@ -87,6 +82,7 @@ protected:
     Standard_Boolean myIsShaderReady;
 
   } myResources;
+  Handle(Graphic3d_AspectLine3d) myAspect;
 
  public:
   DEFINE_STANDARD_ALLOC