Salome HOME
Merge branch 'Dev_1.1.0' of newgeom:newgeom into Dev_1.1.0
[modules/shaper.git] / src / ModuleBase / ModuleBase_FilterLinearEdge.cpp
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
2
3 // File:        ModuleBase_FilterLinearEdge.cpp
4 // Created:     10 Dec 2014
5 // Author:      Natalia ERMOLAEVA
6
7
8 #include "ModuleBase_FilterLinearEdge.h"
9
10 #include <StdSelect_EdgeFilter.hxx>
11 #include <StdSelect_TypeOfEdge.hxx>
12
13 #include <Events_Error.h>
14
15 #include <QString>
16 #include <QMap>
17
18 typedef QMap<QString, StdSelect_TypeOfEdge> EdgeTypes;
19 static EdgeTypes MyEdgeTypes;
20
21 StdSelect_TypeOfEdge ModuleBase_FilterLinearEdge::edgeType(const std::string& theType)
22 {
23   if (MyEdgeTypes.count() == 0) {
24     MyEdgeTypes["line"] = StdSelect_Line;
25     MyEdgeTypes["circle"] = StdSelect_Circle;
26   }
27   QString aType = QString(theType.c_str()).toLower();
28   if (MyEdgeTypes.contains(aType))
29     return MyEdgeTypes[aType];
30   Events_Error::send("Edge type defined in XML is not implemented!");
31   return StdSelect_AnyEdge;
32 }
33
34 void ModuleBase_FilterLinearEdge::createFilter()
35 {
36   myFilter = new StdSelect_EdgeFilter(StdSelect_AnyEdge);
37 }
38
39 void ModuleBase_FilterLinearEdge::setArguments(const std::list<std::string>& theArguments)
40 {
41   if (theArguments.size()!= 1)
42     return;
43
44   std::string anArgument = theArguments.front();
45   Handle(StdSelect_EdgeFilter) aFilter = Handle(StdSelect_EdgeFilter)::DownCast(getFilter());
46   if (!aFilter.IsNull())
47     aFilter->SetType(edgeType(anArgument));
48 }