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
27namespace 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
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
Definition: extrusion.h:30
void addContour(const std::shared_ptr< std::vector< std::shared_ptr< PolygonPoint > > > &contour_)
Definition: extrusion.h:74
void clearContours()
Definition: extrusion.h:67
void initializeUsingXML(xercesc::DOMElement *element) override
Definition: extrusion.cc:55
void setHeight(double height_)
Definition: extrusion.h:60
void setWindingRule(WindingRule windingRule_)
Definition: extrusion.h:51
Definition: objectfactory.h:38
Abstract base class for all rigid bodies.
Definition: rigidbody.h:68