0027670: Visualization - avoid duplication of structures defining primitive array...
[occt.git] / src / Graphic3d / Graphic3d_AspectMarker3d.hxx
index 5945001..410f7d8 100644 (file)
 #ifndef _Graphic3d_AspectMarker3d_HeaderFile
 #define _Graphic3d_AspectMarker3d_HeaderFile
 
-#include <Standard.hxx>
-#include <Standard_Type.hxx>
-
+#include <Aspect_AspectMarkerDefinitionError.hxx>
+#include <Aspect_TypeOfMarker.hxx>
 #include <Graphic3d_MarkerImage.hxx>
 #include <Graphic3d_ShaderProgram.hxx>
-#include <Aspect_AspectMarker.hxx>
-#include <Aspect_TypeOfMarker.hxx>
-#include <Standard_Real.hxx>
+#include <Image_PixMap.hxx>
+#include <Standard.hxx>
 #include <Standard_Integer.hxx>
+#include <Standard_Real.hxx>
+#include <Standard_Type.hxx>
 #include <TColStd_HArray1OfByte.hxx>
-#include <Image_PixMap.hxx>
-class Quantity_Color;
+#include <Quantity_ColorRGBA.hxx>
 
-
-class Graphic3d_AspectMarker3d;
-DEFINE_STANDARD_HANDLE(Graphic3d_AspectMarker3d, Aspect_AspectMarker)
-
-//! Creates and updates an attribute group for
-//! marker type primitives. This group contains the type
-//! of marker, its colour, and its scale factor.
-class Graphic3d_AspectMarker3d : public Aspect_AspectMarker
+//! Creates and updates an attribute group for marker type primitives.
+//! This group contains the type of marker, its color, and its scale factor.
+class Graphic3d_AspectMarker3d : public Standard_Transient
 {
-
+  DEFINE_STANDARD_RTTIEXT(Graphic3d_AspectMarker3d, Standard_Transient)
 public:
 
-  
   //! Creates a context table for marker primitives
   //! defined with the following default values:
   //!
   //! Marker type : TOM_X
-  //! Colour      : YELLOW
+  //! Color       : YELLOW
   //! Scale factor: 1.0
   Standard_EXPORT Graphic3d_AspectMarker3d();
   
@@ -59,48 +52,82 @@ public:
   //! Creates a context table for marker primitives
   //! defined with the specified values.
   Standard_EXPORT Graphic3d_AspectMarker3d(const Handle(Image_PixMap)& theTextureImage);
-  
-  //! Returns marker's texture size.
-  Standard_EXPORT void GetTextureSize (Standard_Integer& theWidth, Standard_Integer& theHeight) const;
-  
-  //! Returns marker's image texture.
-  //! Could be null handle if marker aspect has been initialized as
-  //! default type of marker.
-  Standard_EXPORT const Handle(Graphic3d_MarkerImage)& GetMarkerImage() const;
-  
-  //! Set marker's image texture.
-  Standard_EXPORT void SetMarkerImage (const Handle(Graphic3d_MarkerImage)& theImage);
-  
-  Standard_EXPORT void SetBitMap (const Standard_Integer theWidth, const Standard_Integer theHeight, const Handle(TColStd_HArray1OfByte)& theTexture);
-  
-  //! Sets up OpenGL/GLSL shader program.
-  Standard_EXPORT void SetShaderProgram (const Handle(Graphic3d_ShaderProgram)& theProgram);
-  
-  Standard_EXPORT const Handle(Graphic3d_ShaderProgram)& ShaderProgram() const;
-
 
+  //! Return color.
+  const Quantity_ColorRGBA& ColorRGBA() const { return myColor; }
 
+  //! Return the color.
+  const Quantity_Color& Color() const { return myColor.GetRGB(); }
 
-  DEFINE_STANDARD_RTTIEXT(Graphic3d_AspectMarker3d,Aspect_AspectMarker)
+  //! Modifies the color.
+  void SetColor (const Quantity_Color& theColor) { myColor.SetRGB (theColor); }
 
-protected:
+  //! Return scale factor.
+  Standard_ShortReal Scale() const { return myScale; }
 
+  //! Modifies the scale factor.
+  //! Marker type Aspect_TOM_POINT is not affected by the marker size scale factor.
+  //! It is always the smallest displayable dot.
+  //! Warning: Raises AspectMarkerDefinitionError if the scale is a negative value.
+  void SetScale (const Standard_ShortReal theScale)
+  {
+    if (theScale <= 0.0f)
+    {
+      Aspect_AspectMarkerDefinitionError::Raise ("Bad value for MarkerScale");
+    }
+    myScale = theScale;
+  }
 
-  Handle(Graphic3d_MarkerImage) myMarkerImage;
+  //! Assign scale factor.
+  void SetScale (const Standard_Real theScale) { SetScale ((float )theScale); }
 
+  //! Return marker type.
+  Aspect_TypeOfMarker Type() const { return myType; }
 
-private:
+  //! Modifies the type of marker.
+  void SetType (const Aspect_TypeOfMarker theType) { myType = theType; }
 
+  //! Returns marker's texture size.
+  Standard_EXPORT void GetTextureSize (Standard_Integer& theWidth, Standard_Integer& theHeight) const;
+  
+  //! Returns marker's image texture.
+  //! Could be null handle if marker aspect has been initialized as default type of marker.
+  const Handle(Graphic3d_MarkerImage)& GetMarkerImage() const { return myMarkerImage; }
+  
+  //! Set marker's image texture.
+  void SetMarkerImage (const Handle(Graphic3d_MarkerImage)& theImage) { myMarkerImage = theImage; }
 
-  Handle(Graphic3d_ShaderProgram) MyShaderProgram;
+  Standard_EXPORT void SetBitMap (const Standard_Integer theWidth, const Standard_Integer theHeight, const Handle(TColStd_HArray1OfByte)& theTexture);
 
+  //! Return the program.
+  const Handle(Graphic3d_ShaderProgram)& ShaderProgram() const { return myProgram; }
 
-};
+  //! Sets up OpenGL/GLSL shader program.
+  void SetShaderProgram (const Handle(Graphic3d_ShaderProgram)& theProgram) { myProgram = theProgram; }
 
+public:
 
+  //! Returns the current values of the group.
+  Standard_DEPRECATED("Deprecated method Values() should be replaced by individual property getters")
+  void Values (Quantity_Color&      theColor,
+               Aspect_TypeOfMarker& theType,
+               Standard_Real&       theScale) const
+  {
+    theColor = myColor.GetRGB();
+    theType  = myType;
+    theScale = myScale;
+  }
 
+protected:
 
+  Handle(Graphic3d_ShaderProgram) myProgram;
+  Handle(Graphic3d_MarkerImage)   myMarkerImage;
+  Quantity_ColorRGBA  myColor;
+  Aspect_TypeOfMarker myType;
+  Standard_ShortReal  myScale;
 
+};
 
+DEFINE_STANDARD_HANDLE(Graphic3d_AspectMarker3d, Standard_Transient)
 
 #endif // _Graphic3d_AspectMarker3d_HeaderFile