Salome HOME
Task #3231: Sketcher Offset of a curve
[modules/shaper.git] / src / SketcherPrs / SketcherPrs_Factory.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 SketcherPrs_Factory_H_
21 #define SketcherPrs_Factory_H_
22
23 #include "SketcherPrs.h"
24 #include <SketchPlugin_Sketch.h>
25
26 #include <ModelAPI_Feature.h>
27 #include <ModelAPI_CompositeFeature.h>
28
29 #include <GeomAPI_Ax3.h>
30 #include <GeomAPI_AISObject.h>
31
32 #define GET_CONSTRAINT_PRS(NAME) \
33   static AISObjectPtr NAME(ModelAPI_Feature* theConstraint, \
34                            SketchPlugin_Sketch* theSketcher, \
35                            AISObjectPtr thePrevious);
36
37 /**
38 * Class which creates constraints presentations
39 */
40 class SKETCHERPRS_EXPORT SketcherPrs_Factory
41 {
42 public:
43   /// Creates collinear constraint presentation
44   /// \param theConstraint the constraint
45   /// \param thePlane the current sketch plane
46   /// \param thePrevious the previous presentation
47   GET_CONSTRAINT_PRS(collinearConstraint)
48
49   /// Creates parallel constraint presentation
50   /// \param theConstraint the constraint
51   /// \param thePlane the current sketch plane
52   /// \param thePrevious the previous presentation
53   GET_CONSTRAINT_PRS(parallelConstraint)
54
55   /// Creates coincedent perpendicular presentation
56   /// \param theConstraint the constraint
57   /// \param thePlane the current sketch plane
58   /// \param thePrevious the previous presentation
59   GET_CONSTRAINT_PRS(perpendicularConstraint)
60
61   /// Creates rigid constraint presentation
62   /// \param theConstraint the constraint
63   /// \param thePlane the current sketch plane
64   /// \param thePrevious the previous presentation
65   GET_CONSTRAINT_PRS(rigidConstraint)
66
67   /// Creates horizontal constraint presentation
68   /// \param theConstraint the constraint
69   /// \param thePlane the current sketch plane
70   /// \param thePrevious the previous presentation
71   GET_CONSTRAINT_PRS(horisontalConstraint)
72
73   /// Creates vertical constraint presentation
74   /// \param theConstraint the constraint
75   /// \param thePlane the current sketch plane
76   /// \param thePrevious the previous presentation
77   GET_CONSTRAINT_PRS(verticalConstraint)
78
79   /// Creates equal constraint presentation
80   /// \param theConstraint the constraint
81   /// \param thePlane the current sketch plane
82   /// \param thePrevious the previous presentation
83   GET_CONSTRAINT_PRS(equalConstraint)
84
85   /// Creates tangent constraiont presentation
86   /// \param theConstraint the constraint
87   /// \param thePlane the current sketch plane
88   /// \param thePrevious the previous presentation
89   GET_CONSTRAINT_PRS(tangentConstraint)
90
91   /// Creates middle constraint presentation
92   /// \param theConstraint the constraint
93   /// \param thePlane the current sketch plane
94   /// \param thePrevious the previous presentation
95   GET_CONSTRAINT_PRS(middleConstraint)
96
97   /// Creates mirror constraint presentation
98   /// \param theConstraint the constraint
99   /// \param thePlane the current sketch plane
100   /// \param thePrevious the previous presentation
101   GET_CONSTRAINT_PRS(mirrorConstraint)
102
103   /// Creates translate constraint presentation
104   /// \param theConstraint the constraint
105   /// \param thePlane the current sketch plane
106   /// \param thePrevious the previous presentation
107   GET_CONSTRAINT_PRS(translateConstraint)
108
109   /// Creates rotate constraint presentation
110   /// \param theConstraint the constraint
111   /// \param thePlane the current sketch plane
112   /// \param thePrevious the previous presentation
113   GET_CONSTRAINT_PRS(rotateConstraint)
114
115   /// Creates coincedent constraint presentation
116   /// \param theConstraint the constraint
117   /// \param thePlane the current sketch plane
118   /// \param thePrevious the previous presentation
119   GET_CONSTRAINT_PRS(coincidentConstraint)
120
121   /// Creates length dimension presentation
122   /// \param theConstraint the constraint
123   /// \param thePlane the current sketch plane
124   /// \param thePrevious the previous presentation
125   GET_CONSTRAINT_PRS(lengthDimensionConstraint)
126
127   /// Creates angle constraint presentation
128   /// \param theConstraint the constraint
129   /// \param thePlane the current sketch plane
130   /// \param thePrevious the previous presentation
131   GET_CONSTRAINT_PRS(angleConstraint)
132
133   /// Creates radius dimension presentation
134   /// \param theConstraint the constraint
135   /// \param thePlane the current sketch plane
136   /// \param thePrevious the previous presentation
137   GET_CONSTRAINT_PRS(radiusConstraint)
138
139   /// Creates radius dimension presentation
140   /// \param theConstraint the constraint
141   /// \param thePlane the current sketch plane
142   /// \param thePrevious the previous presentation
143   GET_CONSTRAINT_PRS(offsetObject)
144 };
145
146 #endif