Salome HOME
Issue #2059 point in sketch is created not on selected line of external sketchPlane...
[modules/shaper.git] / src / GeomAPI / GeomAPI_AISObject.h
index 48e3d6fa0144b48f4488505698462c55f08a8192..70e06b9beae47857b236e600bd9fb2e9c14f0112 100644 (file)
@@ -22,15 +22,23 @@ class GeomAPI_Shape;
  *  \brief Interface for AIS_InteractiveObject
  */
 
-class GEOMAPI_EXPORT GeomAPI_AISObject : public GeomAPI_Interface
+class GeomAPI_AISObject : public GeomAPI_Interface
 {
  public:
   /// \brief Creation of empty AIS object
+  GEOMAPI_EXPORT
   GeomAPI_AISObject();
 
+  GEOMAPI_EXPORT
+  ~GeomAPI_AISObject();
+
   /// \brief Creates AIS_Shape object using specified shape
+  GEOMAPI_EXPORT
   void createShape(std::shared_ptr<GeomAPI_Shape> theShape);
 
+  /// Reyirns shape used for the presentation creation (can be NULL)
+  GEOMAPI_EXPORT std::shared_ptr<GeomAPI_Shape> getShape() const;
+
   /** \brief Creates AIS_LengthDimension object
    *  \param[in] theStartPoint  first point for dimension
    *  \param[in] theEndPoint    second point for dimension
@@ -38,16 +46,26 @@ class GEOMAPI_EXPORT GeomAPI_AISObject : public GeomAPI_Interface
    *  \param[in] thePlane       the plane which contains all points above
    *  \param[in] theDistance    value of the distance to be shown
    */
+  GEOMAPI_EXPORT
   void createDistance(std::shared_ptr<GeomAPI_Pnt> theStartPoint,
                       std::shared_ptr<GeomAPI_Pnt> theEndPoint,
                       std::shared_ptr<GeomAPI_Pnt> theFlyoutPoint,
                       std::shared_ptr<GeomAPI_Pln> thePlane, double theDistance);
 
+  /**
+   * Returns validity of the AIS distance. It is invalid if set measured geometry is not valid,
+   * e.g. the distance points are equal.
+   * \return a boolean result
+   */
+  GEOMAPI_EXPORT
+  bool isEmptyDistanceGeometry();
+
   /** \brief Creates AIS_RadiusDimension object
    *  \param[in] theCircle      the radius is created for this circle
    *  \param[in] theFlyoutPoint the flyout of dimension
    *  \param[in] theRadius      value of the radius to be shown
    */
+  GEOMAPI_EXPORT
   void createRadius(std::shared_ptr<GeomAPI_Circ> theCircle,
                     std::shared_ptr<GeomAPI_Pnt> theFlyoutPoint, double theRadius);
 
@@ -57,6 +75,7 @@ class GEOMAPI_EXPORT GeomAPI_AISObject : public GeomAPI_Interface
    *  \param[in] theFlyoutPoint the flyout point for relation
    *  \param[in] thePlane       the plane which contains the lines
    */
+  GEOMAPI_EXPORT
   void createParallel(std::shared_ptr<GeomAPI_Shape> theLine1,
                       std::shared_ptr<GeomAPI_Shape> theLine2,
                       std::shared_ptr<GeomAPI_Pnt> theFlyoutPoint,
@@ -67,6 +86,7 @@ class GEOMAPI_EXPORT GeomAPI_AISObject : public GeomAPI_Interface
    *  \param[in] theLine2       second parallel line
    *  \param[in] thePlane       the plane which contains the lines
    */
+  GEOMAPI_EXPORT
   void createPerpendicular(std::shared_ptr<GeomAPI_Shape> theLine1,
                            std::shared_ptr<GeomAPI_Shape> theLine2,
                            std::shared_ptr<GeomAPI_Pln> thePlane);
@@ -75,26 +95,77 @@ class GEOMAPI_EXPORT GeomAPI_AISObject : public GeomAPI_Interface
    *  \param[in] theShape       the object
    *  \param[in] thePlane       the plane which contains the lines
    */
+  GEOMAPI_EXPORT
   void createFixed(std::shared_ptr<GeomAPI_Shape> theShape,
                    std::shared_ptr<GeomAPI_Pln> thePlane);
 
   /** \brief Assigns the color for the shape
    *  \param[in] theColor index of the color
    */
+  GEOMAPI_EXPORT
   void setColor(const int& theColor);
 
   /** \brief Assigns the color for the shape
    *  \param[in] theR value of the red component
    *  \param[in] theG value of the green component
    *  \param[in] theB value of the blue component
+   *  \returns true if the presentation color is changed
    */
-  void setColor(int theR, int theG, int theB);
+  GEOMAPI_EXPORT
+  bool setColor(int theR, int theG, int theB);
+
+  /** \brief Returns the color for the shape
+   *  \param[in] theR value of the red component
+   *  \param[in] theG value of the green component
+   *  \param[in] theB value of the blue component
+   */
+  GEOMAPI_EXPORT
+  void getColor(int& theR, int& theG, int& theB);
+
+  /** \brief Assigns the deflection to the shape
+   *  \param[in] theDeflection value of deflection
+   */
+  GEOMAPI_EXPORT
+  bool setDeflection(const double theDeflection);
+
+  /** \brief Returns deflection for the shape
+   *  \return double value
+   */
+  GEOMAPI_EXPORT
+  double getDeflection() const;
+
+  /// \return Current width of the lines of shape
+  GEOMAPI_EXPORT
+  double width();
 
   /// \brief Assigns the width of the lines of shape
-  void setWidth(const double& theWidth);
+  GEOMAPI_EXPORT
+  bool setWidth(const double& theWidth);
 
   /// \brief Checks if the object is empty
+  GEOMAPI_EXPORT
   bool empty() const;
+
+  /// Return shape type according to TopAbs_ShapeEnum if the AIS is AIS_Shape
+  /// Otherwise returns -1
+  GEOMAPI_EXPORT
+  int getShapeType() const;
+
+  /// Sets marker type for vertex.
+  /// The type has to be defined according to Acpect_TypeOfMarker
+  GEOMAPI_EXPORT
+  void setPointMarker(int theType, double theScale);
+
+  /// Set line type of edges
+  /// Has to be defined according to Aspect_TypeOfLine
+  /// \returns true if the object value differs from the current
+  GEOMAPI_EXPORT
+  bool setLineStyle(int theStyle);
+
+  /// Set transparency of the presentation (theVal = 0 ... 1)
+  /// \returns true if the object value differs from the current
+  GEOMAPI_EXPORT
+  bool setTransparensy(double theVal);
 };
 
 //! Pointer on attribute object