30 #ifndef _GranOO_LibShape_Base_hh_
31 #define _GranOO_LibShape_Base_hh_
37 #include <vtkUnstructuredGrid.h>
52 #include <OpenGL/gl.h>
59 #define GRANOO_SERIALIZE_SHAPE(CLASS) \
60 namespace boost {namespace serialization { \
61 template<class Archive> \
62 inline void save_construct_data(Archive & ar, \
63 const GranOO3::Shape::CLASS * t, \
64 const unsigned int) { \
66 const GranOO3::Geom::Point* p = &t->get_center(); \
67 const GranOO3::Geom::Quaternion* q = &t->get_quaternion(); \
69 template<class Archive> \
70 inline void load_construct_data(Archive & ar, \
71 GranOO3::Shape::CLASS * t, \
72 const unsigned int) { \
74 GranOO3::Geom::Point* p = nullptr; \
75 GranOO3::Geom::Quaternion* q = nullptr; \
77 GranOO3::Geom::Frame* f = new GranOO3::Geom::Frame(*p, *q, GranOO3::Geom::global::frame); \
78 ::new(t)GranOO3::Shape::CLASS(*f);}}}
90 std::ostream&
operator<< (std::ostream& os,
const Base&);
91 std::istream&
operator>> (std::istream& is, Base&);
99 static Base&
glob(
const std::string&
id);
102 return std::string(
"ShapeBase");
126 virtual std::ostream&
write_ascii (std::ostream& out)
const;
127 virtual std::istream&
read_ascii (std::istream& in);
128 virtual void to_vtk(vtkUnstructuredGrid*
data);
129 virtual std::string
info()
const;
185 std::ostringstream str;
186 str <<
"Frame center : " <<
local_frame().get_center() <<
'\n';
187 str <<
"Frame quaternion : " <<
local_frame().get_quaternion() <<
'\n';
202 template<
class ChildClass>
211 extern template class ObjectFactoryRegistered<Shape::Base>;
212 extern template class ObjectFactory<Shape::Base>;
const Vector & get_position() const
void translate(const Vector &v)
Definition: Point.cpp:88
Definition: Quaternion.hpp:54
void set_axis_angle(const Vector &axis, double angle)
Definition: Vector.hpp:75
virtual void scale(double)=0
static Base & glob(const std::string &id)
Definition: Base.cpp:44
virtual void draw_gl() const =0
virtual std::ostream & to_povray(std::ostream &out, const Core::Color &) const
Definition: Base.cpp:100
virtual std::ostream & write_ascii(std::ostream &out) const
Definition: Base.cpp:79
void serialize(Archive &ar, const unsigned int version)
Definition: Base.hpp:151
Base(const Geom::Frame &frame)
Definition: Base.hpp:112
const Geom::Point & get_center() const
Definition: Base.hpp:134
virtual ~Base()
Definition: Base.hpp:113
const Geom::Quaternion & get_quaternion() const
Definition: Base.hpp:135
static Base * new_object(const TiXmlElement *el)
Definition: Base.cpp:60
void translate(Geom::Vector &)
Definition: Base.hpp:172
virtual void to_vtk(vtkUnstructuredGrid *data)
Definition: Base.cpp:90
Base & operator=(const Base &)
virtual std::string info() const
Definition: Base.hpp:184
void unscale(double)
Definition: Base.cpp:94
const Geom::Frame & _frame
Definition: Base.hpp:143
static std::string class_ID()
Definition: Base.hpp:101
static const Geom::Frame * _frame_buffer
Definition: Base.hpp:108
virtual void add_glob(const std::string &)=0
virtual std::istream & read_ascii(std::istream &in)
Definition: Base.cpp:85
virtual void read_xml_element(const TiXmlElement *el)
Definition: Base.cpp:55
friend class boost::serialization::access
Definition: Base.hpp:150
void rotate(const Geom::Vector &axis, const double angleRadian)
Definition: Base.hpp:178
virtual bool is_surface() const =0
virtual bool is_volume() const =0
const Geom::Frame & local_frame() const
Definition: Base.hpp:133
const Geom::Vector & get_position() const
Definition: Base.hpp:136
virtual void draw_gl_edge() const
Definition: Base.hpp:167
static const Geom::Frame & frame_buffer()
Definition: Base.cpp:49
std::ostream & operator<<(std::ostream &os, const Base &)
Definition: Base.hpp:157
std::istream & operator>>(std::istream &is, Base &)
Definition: Base.hpp:162
Definition: Common.hpp:198
x y t t *t x y t t t x y t t t x *y t *t t x *y t *t t x y t t t x y t t t t(t+t)") define_sfop3(16
static ChildClass * build()
Definition: Base.hpp:205
Definition: ObjectFactory.hpp:249