Salome HOME
msvc compile patch
[modules/shaper.git] / src / ModelAPI / ModelAPI_ResultConstruction.h
1 // Copyright (C) 2014-2020  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 MODELAPI_EXPORT class ModelAPI_ResultConstruction : public ModelAPI_Result
37 {
38  public:
39   MODELAPI_EXPORT ModelAPI_ResultConstruction();
40
41   /// Returns the group identifier of this result
42   MODELAPI_EXPORT virtual std::string groupName();
43
44   /// Returns the group identifier of this result
45   inline static std::string group()
46   {
47     static std::string MY_GROUP = "Construction";
48     return MY_GROUP;
49   }
50
51   /// default color for a result construction
52   inline static const std::string& DEFAULT_COLOR()
53   {
54     static const std::string RESULT_CONSTRUCTION_COLOR("120,120,120");
55     return RESULT_CONSTRUCTION_COLOR;
56   }
57
58   /// default deflection for a result construction
59   inline static const std::string DEFAULT_DEFLECTION()
60   {
61     return "0.00001";
62   }
63
64   /// Sets the result
65   virtual void setShape(std::shared_ptr<GeomAPI_Shape> theShape) = 0;
66
67   /// Updates the shape taking the current value from the data structure, returns true
68   /// if update has been correctly done
69   virtual bool updateShape() = 0;
70
71   /// Sets the flag that it must be displayed in history (default is true)
72   virtual void setIsInHistory(const bool isInHistory) = 0;
73
74   /// if the construction result may be used as faces, this method returns not zero number of faces
75   /// \param theUpdateNaming is false of keeping the naming structure untouched (on load)
76   virtual int facesNum(const bool theUpdateNaming = true) = 0;
77   /// if the construction result may be used as faces, this method returns face by zero based index
78   virtual std::shared_ptr<GeomAPI_Face> face(const int theIndex) = 0;
79   /// Change the order of faces
80   virtual void setFacesOrder(const std::list<std::shared_ptr<GeomAPI_Face> >& theFaces) = 0;
81
82   /// By default object is not infinite.
83   virtual bool isInfinite() = 0;
84   /// Sets the flag that it is infinite
85   virtual void setInfinite(const bool theInfinite) = 0;
86
87   /*************************************************************************/
88   /// Changes for custom point color
89
90   inline static const std::string& DEFAULT_COLOR_CONFIG_NAME()
91   {
92     static const std::string RESULT_CONSTRUCTION_COLOR_CONFIG_NAME("result_construction_color");
93     return RESULT_CONSTRUCTION_COLOR_CONFIG_NAME;
94   }
95
96   inline void setColor(const std::string myColor, const std::string & myColorConfigName)
97   {
98     color = myColor;
99     colorConfigName = myColorConfigName;
100   }
101
102   inline const std::string & getColor() const
103   {
104     return color;
105   }
106
107   inline const std::string & getColorConfigName() const
108   {
109     return  colorConfigName;
110   }
111
112 private:
113   std::string color;
114   std::string colorConfigName;
115
116 public:
117
118   /// Specific properties for point
119   class ModelApi_PointColor
120   {
121   public:
122     /// default color for a point construction
123     inline static const std::string& DEFAULT_COLOR()
124     {
125       static const std::string POINT_CONSTRUCTION_COLOR("85,85,0");
126       return POINT_CONSTRUCTION_COLOR;
127     }
128
129     inline static const std::string COLOR_CONFIG_NAME()
130     {
131       static const std::string POINT_CONFIG_COLOR_NAME("result_point_color");
132       return POINT_CONFIG_COLOR_NAME;
133     }
134   };
135   /*************************************************************************/
136 };
137
138 //! Pointer on feature object
139 typedef std::shared_ptr<ModelAPI_ResultConstruction> ResultConstructionPtr;
140
141 #endif