]> SALOME platform Git repositories - modules/shaper.git/blob - src/GeomAPI/GeomAPI_AISObject.h
Salome HOME
Fix for the issue #2401
[modules/shaper.git] / src / GeomAPI / GeomAPI_AISObject.h
1 // Copyright (C) 2014-2017  CEA/DEN, EDF R&D
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or
18 // email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
19 //
20
21 #ifndef GeomAPI_AISObject_H_
22 #define GeomAPI_AISObject_H_
23
24 #include <GeomAPI_Interface.h>
25
26 #include <memory>
27
28 class GeomAPI_Circ;
29 class GeomAPI_Lin;
30 class GeomAPI_Pln;
31 class GeomAPI_Pnt;
32 class GeomAPI_Shape;
33
34 /** \class GeomAPI_AISObject
35  *  \ingroup DataModel
36  *  \brief Interface for AIS_InteractiveObject
37  */
38
39 class GeomAPI_AISObject : public GeomAPI_Interface
40 {
41  public:
42   /// \brief Creation of empty AIS object
43   GEOMAPI_EXPORT
44   GeomAPI_AISObject();
45
46   GEOMAPI_EXPORT
47   ~GeomAPI_AISObject();
48
49   /// \brief Creates AIS_Shape object using specified shape
50   GEOMAPI_EXPORT
51   void createShape(std::shared_ptr<GeomAPI_Shape> theShape);
52
53   /// Reyirns shape used for the presentation creation (can be NULL)
54   GEOMAPI_EXPORT std::shared_ptr<GeomAPI_Shape> getShape() const;
55
56   /** \brief Creates AIS_LengthDimension object
57    *  \param[in] theStartPoint  first point for dimension
58    *  \param[in] theEndPoint    second point for dimension
59    *  \param[in] theFlyoutPoint the flyout of dimension relative to the measured line
60    *  \param[in] thePlane       the plane which contains all points above
61    *  \param[in] theDistance    value of the distance to be shown
62    */
63   GEOMAPI_EXPORT
64   void createDistance(std::shared_ptr<GeomAPI_Pnt> theStartPoint,
65                       std::shared_ptr<GeomAPI_Pnt> theEndPoint,
66                       std::shared_ptr<GeomAPI_Pnt> theFlyoutPoint,
67                       std::shared_ptr<GeomAPI_Pln> thePlane, double theDistance);
68
69   /**
70    * Returns validity of the AIS distance. It is invalid if set measured geometry is not valid,
71    * e.g. the distance points are equal.
72    * \return a boolean result
73    */
74   GEOMAPI_EXPORT
75   bool isEmptyDistanceGeometry();
76
77   /** \brief Creates AIS_RadiusDimension object
78    *  \param[in] theCircle      the radius is created for this circle
79    *  \param[in] theFlyoutPoint the flyout of dimension
80    *  \param[in] theRadius      value of the radius to be shown
81    */
82   GEOMAPI_EXPORT
83   void createRadius(std::shared_ptr<GeomAPI_Circ> theCircle,
84                     std::shared_ptr<GeomAPI_Pnt> theFlyoutPoint, double theRadius);
85
86   /** \brief Creates AIS_ParallelRelation object for two lines
87    *  \param[in] theLine1       first parallel line
88    *  \param[in] theLine2       second parallel line
89    *  \param[in] theFlyoutPoint the flyout point for relation
90    *  \param[in] thePlane       the plane which contains the lines
91    */
92   GEOMAPI_EXPORT
93   void createParallel(std::shared_ptr<GeomAPI_Shape> theLine1,
94                       std::shared_ptr<GeomAPI_Shape> theLine2,
95                       std::shared_ptr<GeomAPI_Pnt> theFlyoutPoint,
96                       std::shared_ptr<GeomAPI_Pln> thePlane);
97
98   /** \brief Creates AIS_PerpendicularRelation object for two lines
99    *  \param[in] theLine1       first parallel line
100    *  \param[in] theLine2       second parallel line
101    *  \param[in] thePlane       the plane which contains the lines
102    */
103   GEOMAPI_EXPORT
104   void createPerpendicular(std::shared_ptr<GeomAPI_Shape> theLine1,
105                            std::shared_ptr<GeomAPI_Shape> theLine2,
106                            std::shared_ptr<GeomAPI_Pln> thePlane);
107
108   /** \brief Creates AIS_FixedRelation object for an object
109    *  \param[in] theShape       the object
110    *  \param[in] thePlane       the plane which contains the lines
111    */
112   GEOMAPI_EXPORT
113   void createFixed(std::shared_ptr<GeomAPI_Shape> theShape,
114                    std::shared_ptr<GeomAPI_Pln> thePlane);
115
116   /** \brief Assigns the color for the shape
117    *  \param[in] theColor index of the color
118    */
119   GEOMAPI_EXPORT
120   void setColor(const int& theColor);
121
122   /** \brief Assigns the color for the shape
123    *  \param[in] theR value of the red component
124    *  \param[in] theG value of the green component
125    *  \param[in] theB value of the blue component
126    *  \returns true if the presentation color is changed
127    */
128   GEOMAPI_EXPORT
129   bool setColor(int theR, int theG, int theB);
130
131   /** \brief Returns the color for the shape
132    *  \param[in] theR value of the red component
133    *  \param[in] theG value of the green component
134    *  \param[in] theB value of the blue component
135    */
136   GEOMAPI_EXPORT
137   void getColor(int& theR, int& theG, int& theB);
138
139   /** \brief Assigns the deflection to the shape
140    *  \param[in] theDeflection value of deflection
141    */
142   GEOMAPI_EXPORT
143   bool setDeflection(const double theDeflection);
144
145   /** \brief Returns deflection for the shape
146    *  \return double value
147    */
148   GEOMAPI_EXPORT
149   double getDeflection() const;
150
151   /** \brief Assigns the transparency to the shape
152    *  \param[in] theTransparency value of transparency
153    */
154   GEOMAPI_EXPORT
155   bool setTransparency(const double theTransparency);
156
157   /** \brief Returns deflection for the shape
158    *  \return double value
159    */
160   GEOMAPI_EXPORT
161   double getTransparency() const;
162
163   /// \return Current width of the lines of shape
164   GEOMAPI_EXPORT
165   double width();
166
167   /// \brief Assigns the width of the lines of shape
168   GEOMAPI_EXPORT
169   bool setWidth(const double& theWidth);
170
171   /// \brief Checks if the object is empty
172   GEOMAPI_EXPORT
173   bool empty() const;
174
175   /// Return shape type according to TopAbs_ShapeEnum if the AIS is AIS_Shape
176   /// Otherwise returns -1
177   GEOMAPI_EXPORT
178   int getShapeType() const;
179
180   /// Sets marker type for vertex.
181   /// The type has to be defined according to Acpect_TypeOfMarker
182   GEOMAPI_EXPORT
183   void setPointMarker(int theType, double theScale);
184
185   /// Set line type of edges
186   /// Has to be defined according to Aspect_TypeOfLine
187   /// \returns true if the object value differs from the current
188   GEOMAPI_EXPORT
189   bool setLineStyle(int theStyle);
190
191   /// Set transparency of the presentation (theVal = 0 ... 1)
192   /// \returns true if the object value differs from the current
193   GEOMAPI_EXPORT
194   bool setTransparensy(double theVal);
195 };
196
197 //! Pointer on attribute object
198 typedef std::shared_ptr<GeomAPI_AISObject> AISObjectPtr;
199
200 #endif
201