openmbvcppinterface 3.1.0 OpenMBV C++ Interface

extrusion.h
1 /*
2 OpenMBV - Open Multi Body Viewer.
3 Copyright (C) 2009 Markus Friedrich
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19
20 #ifndef _OPENMBV_EXTRUSION_H_
21 #define _OPENMBV_EXTRUSION_H_
22
23 #include <openmbvcppinterface/rigidbody.h>
24 #include <openmbvcppinterface/polygonpoint.h>
25 #include <vector>
26
27 namespace OpenMBV {
28
30 class Extrusion : public RigidBody {
31 friend class ObjectFactory;
32 public:
33 enum WindingRule {
34 odd,
35 nonzero,
36 positive,
37 negative,
38 absGEqTwo
39 };
40 protected:
41 WindingRule windingRule{odd};
42 double height{1};
43 std::vector<std::shared_ptr<std::vector<std::shared_ptr<PolygonPoint> > > > contour;
44 Extrusion();
45 ~Extrusion() override;
46 public:
51 void setWindingRule(WindingRule windingRule_) {
52 windingRule=windingRule_;
53 }
54
55 WindingRule getWindingRule() { return windingRule; }
56
60 void setHeight(double height_) {
61 height=height_;
62 }
63
64 double getHeight() { return height; }
65
67 void clearContours() {
68 contour.clear();
69 }
70
74 void addContour(const std::shared_ptr<std::vector<std::shared_ptr<PolygonPoint> > > &contour_) {
75 contour.push_back(contour_);
76 }
77
78 std::vector<std::shared_ptr<std::vector<std::shared_ptr<PolygonPoint> > > >& getContours() {
79 return contour;
80 }
81
83 void initializeUsingXML(xercesc::DOMElement *element) override;
84
85 xercesc::DOMElement *writeXMLFile(xercesc::DOMNode *parent) override;
86
87 };
88
89 }
90
91 #endif /* _OPENMBV_EXTRUSION_H_ */
92
OpenMBV::Extrusion::setHeight
void setHeight(double height_)
Definition: extrusion.h:60
OpenMBV::RigidBody
Abstract base class for all rigid bodies.
Definition: rigidbody.h:68
OpenMBV::ObjectFactory
Definition: objectfactory.h:38
OpenMBV::Extrusion::clearContours
void clearContours()
Definition: extrusion.h:67
OpenMBV::Extrusion::setWindingRule
void setWindingRule(WindingRule windingRule_)
Definition: extrusion.h:51
OpenMBV::Extrusion
Definition: extrusion.h:30
OpenMBV::Extrusion::addContour
void addContour(const std::shared_ptr< std::vector< std::shared_ptr< PolygonPoint > > > &contour_)
Definition: extrusion.h:74
OpenMBV::Extrusion::initializeUsingXML
void initializeUsingXML(xercesc::DOMElement *element) override
Definition: extrusion.cc:55