Salome HOME
Update copyrights
[modules/shaper.git] / src / ModelAPI / ModelAPI_ResultConstruction.h
1 // Copyright (C) 2014-2019  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 email : webmaster.salome@opencascade.com
18 //
19
20 #ifndef ModelAPI_ResultConstruction_H_
21 #define ModelAPI_ResultConstruction_H_
22
23 #include "ModelAPI_Result.h"
24 #include <GeomAPI_Shape.h>
25 #include <GeomAPI_Face.h>
26
27 #include <string>
28
29 /**\class ModelAPI_ResultConstruction
30  * \ingroup DataModel
31  * \brief The construction element result of a feature.
32  *
33  * Provides a shape that may be displayed in the viewer.
34  * Intermediate, light result that in many cases produces a result on the fly.
35  */
36 class ModelAPI_ResultConstruction : public ModelAPI_Result
37 {
38  public:
39   /// Returns the group identifier of this result
40   MODELAPI_EXPORT virtual std::string groupName();
41
42   /// Returns the group identifier of this result
43   inline static std::string group()
44   {
45     static std::string MY_GROUP = "Construction";
46     return MY_GROUP;
47   }
48
49   /// default color for a result construction
50   inline static const std::string& DEFAULT_COLOR()
51   {
52     static const std::string RESULT_CONSTRUCTION_COLOR("120,120,120");
53     return RESULT_CONSTRUCTION_COLOR;
54   }
55
56   /// default deflection for a result construction
57   inline static const std::string DEFAULT_DEFLECTION()
58   {
59     return "0.00001";
60   }
61
62   /// Sets the result
63   virtual void setShape(std::shared_ptr<GeomAPI_Shape> theShape) = 0;
64
65   /// Updates the shape taking the current value from the data structure, returns true
66   /// if update has been correctly done
67   virtual bool updateShape() = 0;
68
69   /// Sets the flag that it must be displayed in history (default is true)
70   virtual void setIsInHistory(const bool isInHistory) = 0;
71
72   /// if the construction result may be used as faces, this method returns not zero number of faces
73   /// \param theUpdateNaming is false of keeping the naming structure untouched (on load)
74   virtual int facesNum(const bool theUpdateNaming = true) = 0;
75   /// if the construction result may be used as faces, this method returns face by zero based index
76   virtual std::shared_ptr<GeomAPI_Face> face(const int theIndex) = 0;
77
78   /// By default object is not infinite.
79   virtual bool isInfinite() = 0;
80   /// Sets the flag that it is infinite
81   virtual void setInfinite(const bool theInfinite) = 0;
82 };
83
84 //! Pointer on feature object
85 typedef std::shared_ptr<ModelAPI_ResultConstruction> ResultConstructionPtr;
86
87 #endif