#ifndef _Prs3d_DatumAspect_HeaderFile
#define _Prs3d_DatumAspect_HeaderFile
-#include <Standard.hxx>
-#include <Standard_Type.hxx>
-
-#include <Standard_Boolean.hxx>
-#include <Quantity_Length.hxx>
-#include <Prs3d_BasicAspect.hxx>
-#include <Standard_Real.hxx>
-class Prs3d_LineAspect;
-
-
-class Prs3d_DatumAspect;
-DEFINE_STANDARD_HANDLE(Prs3d_DatumAspect, Prs3d_BasicAspect)
+#include <NCollection_DataMap.hxx>
+#include <Prs3d_ArrowAspect.hxx>
+#include <Prs3d_DatumAttribute.hxx>
+#include <Prs3d_DatumAxes.hxx>
+#include <Prs3d_DatumMode.hxx>
+#include <Prs3d_DatumParts.hxx>
+#include <Prs3d_LineAspect.hxx>
+#include <Prs3d_PointAspect.hxx>
+#include <Prs3d_ShadingAspect.hxx>
+#include <Prs3d_TextAspect.hxx>
//! A framework to define the display of datums.
class Prs3d_DatumAspect : public Prs3d_BasicAspect
{
-
+ DEFINE_STANDARD_RTTIEXT(Prs3d_DatumAspect, Prs3d_BasicAspect)
public:
//! An empty framework to define the display of datums.
Standard_EXPORT Prs3d_DatumAspect();
-
+
+ //! Returns the right-handed coordinate system set in SetComponent.
+ Standard_EXPORT Handle(Prs3d_LineAspect) LineAspect (Prs3d_DatumParts thePart) const;
+
+ //! Returns the right-handed coordinate system set in SetComponent.
+ Standard_EXPORT Handle(Prs3d_ShadingAspect) ShadingAspect (Prs3d_DatumParts thePart) const;
+
+ //! Returns the text attributes for rendering labels.
+ const Handle(Prs3d_TextAspect)& TextAspect() const { return myTextAspect; }
+
+ //! Sets text attributes for rendering labels.
+ void SetTextAspect (const Handle(Prs3d_TextAspect)& theTextAspect) { myTextAspect = theTextAspect; }
+
+ //! Returns the point aspect of origin wireframe presentation
+ const Handle(Prs3d_PointAspect)& PointAspect() const { return myPointAspect; }
+
+ //! Returns the point aspect of origin wireframe presentation
+ void SetPointAspect (const Handle(Prs3d_PointAspect)& theAspect) { myPointAspect = theAspect; }
+
+ //! Returns the arrow aspect of presentation
+ const Handle(Prs3d_ArrowAspect)& ArrowAspect() const { return myArrowAspect; }
+
+ //! Sets the arrow aspect of presentation
+ void SetArrowAspect (const Handle(Prs3d_ArrowAspect)& theAspect) { myArrowAspect = theAspect; }
+
//! Returns the attributes for display of the first axis.
- Standard_EXPORT Handle(Prs3d_LineAspect) FirstAxisAspect() const;
-
+ Standard_DEPRECATED("This method is deprecated - LineAspect() should be called instead")
+ const Handle(Prs3d_LineAspect)& FirstAxisAspect() const { return myLineAspects.Find (Prs3d_DP_XAxis); }
+
//! Returns the attributes for display of the second axis.
- Standard_EXPORT Handle(Prs3d_LineAspect) SecondAxisAspect() const;
-
+ Standard_DEPRECATED("This method is deprecated - LineAspect() should be called instead")
+ const Handle(Prs3d_LineAspect)& SecondAxisAspect() const { return myLineAspects.Find (Prs3d_DP_YAxis); }
+
//! Returns the attributes for display of the third axis.
- Standard_EXPORT Handle(Prs3d_LineAspect) ThirdAxisAspect() const;
-
+ Standard_DEPRECATED("This method is deprecated - LineAspect() should be called instead")
+ const Handle(Prs3d_LineAspect)& ThirdAxisAspect() const { return myLineAspects.Find (Prs3d_DP_ZAxis); }
+
//! Sets the DrawFirstAndSecondAxis attributes to active.
- Standard_EXPORT void SetDrawFirstAndSecondAxis (const Standard_Boolean draw);
-
+ Standard_DEPRECATED("This method is deprecated - SetDrawDatumAxes() should be called instead")
+ Standard_EXPORT void SetDrawFirstAndSecondAxis (Standard_Boolean theToDraw);
+
//! Returns true if the first and second axes can be drawn.
- Standard_EXPORT Standard_Boolean DrawFirstAndSecondAxis() const;
-
+ Standard_DEPRECATED("This method is deprecated - DatumAxes() should be called instead")
+ Standard_Boolean DrawFirstAndSecondAxis() const
+ {
+ return (myAxes & Prs3d_DA_XAxis) != 0
+ && (myAxes & Prs3d_DA_YAxis) != 0;
+ }
+
//! Sets the DrawThirdAxis attributes to active.
- Standard_EXPORT void SetDrawThirdAxis (const Standard_Boolean draw);
-
+ Standard_DEPRECATED("This method is deprecated - SetDrawDatumAxes() should be called instead")
+ Standard_EXPORT void SetDrawThirdAxis (Standard_Boolean theToDraw);
+
//! Returns true if the third axis can be drawn.
- Standard_EXPORT Standard_Boolean DrawThirdAxis() const;
-
- //! Sets the lengths L1, L2 and L3 of the three axes.
- Standard_EXPORT void SetAxisLength (const Standard_Real L1, const Standard_Real L2, const Standard_Real L3);
-
+ Standard_DEPRECATED("This method is deprecated - DatumAxes() should be called instead")
+ Standard_Boolean DrawThirdAxis() const { return (myAxes & Prs3d_DA_ZAxis) != 0; }
+
+ //! Returns true if the given part is used in axes of aspect
+ Standard_EXPORT Standard_Boolean DrawDatumPart (Prs3d_DatumParts thePart) const;
+
+ //! Sets the axes used in the datum aspect
+ void SetDrawDatumAxes (Prs3d_DatumAxes theType) { myAxes = theType; }
+
+ //! Returns axes used in the datum aspect
+ Prs3d_DatumAxes DatumAxes() const { return myAxes; }
+
+ //! Sets the attribute of the datum type
+ void SetAttribute (Prs3d_DatumAttribute theType, const Standard_Real& theValue)
+ {
+ myAttributes.Bind (theType, theValue);
+ }
+
+ //! Returns the attribute of the datum type
+ Standard_Real Attribute (Prs3d_DatumAttribute theType) const
+ {
+ return myAttributes.Find (theType);
+ }
+
+ //! Sets the lengths of the three axes.
+ void SetAxisLength (Standard_Real theL1, Standard_Real theL2, Standard_Real theL3)
+ {
+ myAttributes.Bind (Prs3d_DA_XAxisLength, theL1);
+ myAttributes.Bind (Prs3d_DA_YAxisLength, theL2);
+ myAttributes.Bind (Prs3d_DA_ZAxisLength, theL3);
+ }
+
//! Returns the length of the displayed first axis.
- Standard_EXPORT Quantity_Length FirstAxisLength() const;
-
- //! Returns the length of the displayed second axis.
- Standard_EXPORT Quantity_Length SecondAxisLength() const;
-
- //! Returns the length of the displayed third axis.
- Standard_EXPORT Quantity_Length ThirdAxisLength() const;
+ Standard_EXPORT Standard_Real AxisLength (Prs3d_DatumParts thePart) const;
- //! Sets option to draw or not to draw text labels for axes
- Standard_EXPORT void SetToDrawLabels (const Standard_Boolean theToDraw);
+ //! Returns the length of the displayed first axis.
+ Standard_DEPRECATED("This method is deprecated - AxisLength() should be called instead")
+ Standard_Real FirstAxisLength() const { return myAttributes.Find (Prs3d_DA_XAxisLength); }
+
+ //! Returns the length of the displayed second axis.
+ Standard_DEPRECATED("This method is deprecated - AxisLength() should be called instead")
+ Standard_Real SecondAxisLength() const { return myAttributes.Find (Prs3d_DA_YAxisLength); }
- //! @return true if axes labels are drawn
- Standard_EXPORT Standard_Boolean ToDrawLabels() const;
+ //! Returns the length of the displayed third axis.
+ Standard_DEPRECATED("This method is deprecated - AxisLength() should be called instead")
+ Standard_Real ThirdAxisLength() const { return myAttributes.Find (Prs3d_DA_ZAxisLength); }
- DEFINE_STANDARD_RTTI(Prs3d_DatumAspect,Prs3d_BasicAspect)
+ //! @return true if axes labels are drawn; TRUE by default.
+ Standard_Boolean ToDrawLabels() const { return myToDrawLabels; }
-private:
+ //! Sets option to draw or not to draw text labels for axes
+ void SetDrawLabels (Standard_Boolean theToDraw) { myToDrawLabels = theToDraw; }
+ void SetToDrawLabels (Standard_Boolean theToDraw) { myToDrawLabels = theToDraw; }
- Handle(Prs3d_LineAspect) myFirstAxisAspect;
- Handle(Prs3d_LineAspect) mySecondAxisAspect;
- Handle(Prs3d_LineAspect) myThirdAxisAspect;
- Standard_Boolean myDrawFirstAndSecondAxis;
- Standard_Boolean myDrawThirdAxis;
- Standard_Boolean myToDrawLabels;
- Quantity_Length myFirstAxisLength;
- Quantity_Length mySecondAxisLength;
- Quantity_Length myThirdAxisLength;
+ //! @return true if axes arrows are drawn; TRUE by default.
+ Standard_Boolean ToDrawArrows() const { return myToDrawArrows; }
-};
+ //! Sets option to draw or not arrows for axes
+ void SetDrawArrows (Standard_Boolean theToDraw) { myToDrawArrows = theToDraw; }
+ //! Returns type of arrow for a type of axis
+ Standard_EXPORT Prs3d_DatumParts ArrowPartForAxis (Prs3d_DatumParts thePart) const;
+ //! Dumps the content of me into the stream
+ Standard_EXPORT virtual void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const Standard_OVERRIDE;
+private:
+ Prs3d_DatumAxes myAxes;
+ Standard_Boolean myToDrawLabels;
+ Standard_Boolean myToDrawArrows;
+ NCollection_DataMap<Prs3d_DatumAttribute, Standard_Real> myAttributes;
+ NCollection_DataMap<Prs3d_DatumParts, Handle(Prs3d_ShadingAspect)> myShadedAspects;
+ NCollection_DataMap<Prs3d_DatumParts, Handle(Prs3d_LineAspect)> myLineAspects;
+ Handle(Prs3d_TextAspect) myTextAspect;
+ Handle(Prs3d_PointAspect) myPointAspect;
+ Handle(Prs3d_ArrowAspect) myArrowAspect;
+};
+DEFINE_STANDARD_HANDLE(Prs3d_DatumAspect, Prs3d_BasicAspect)
#endif // _Prs3d_DatumAspect_HeaderFile