OpenStructure
Loading...
Searching...
No Matches
exporter.hh
Go to the documentation of this file.
1//------------------------------------------------------------------------------
2// This file is part of the OpenStructure project <www.openstructure.org>
3//
4// Copyright (C) 2008-2020 by the OpenStructure authors
5//
6// This library is free software; you can redistribute it and/or modify it under
7// the terms of the GNU Lesser General Public License as published by the Free
8// Software Foundation; either version 3.0 of the License, or (at your option)
9// any later version.
10// This library is distributed in the hope that it will be useful, but WITHOUT
11// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
13// details.
14//
15// You should have received a copy of the GNU Lesser General Public License
16// along with this library; if not, write to the Free Software Foundation, Inc.,
17// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18//------------------------------------------------------------------------------
19#ifndef OST_GFX_EXPORTER_HH
20#define OST_GFX_EXPORTER_HH
21
22#include <ost/geom/vec3.hh>
23#include <ost/geom/vec4.hh>
24#include <ost/geom/mat3.hh>
25#include <ost/geom/mat4.hh>
26
28
29namespace ost { namespace gfx {
30
31class Scene;
32
34{
35public:
36 enum NodeType {
37 ROOT=1,
38 GROUP=2,
39 OBJ=3
40 };
41
43 scale_(1.0),
44 to_origin_(true)
45 {}
46 virtual ~Exporter() {}
47 virtual void SceneStart(const Scene* scene) {}
48 virtual void SceneEnd(const Scene* scene) {}
49
50 virtual void NodeStart(const std::string& name, NodeType t) {}
51 virtual void NodeEnd(const std::string& name) {}
52
53 // this indicates beginning of new data, including a reset of the indices
54 // may occur more than once for a given node
55 virtual void WriteVertexData(const float* v, const float* n, const float* c, const float* t,
56 size_t stride, size_t count) {}
57 virtual void WritePointData(const unsigned int* i, size_t count) {}
58 virtual void WriteLineData(const unsigned int* ij, size_t count) {}
59 virtual void WriteTriData(const unsigned int* ijk, size_t count) {}
60 virtual void WriteQuadData(const unsigned int* ijkl, size_t count) {}
61
62 // scale positions for absolute data formats (like dae)
63 void SetScale(float s) {scale_=s;}
64 float GetScale() const {return scale_;}
65 // if true (default), re-orient so that center is at (0,0,0)
66 // and viewing direction is along z
67 // (basically apply modelview matrix)
68 void SetToOrigin(bool b) {to_origin_=b;}
69 bool GetToOrigin() const {return to_origin_;}
70
71 // used by Scene::Export
72 void SetupTransform(const Scene* scene);
73 // used by WriteVertexData in derived classes
74 // modifies input arg!!
75 void TransformPosition(float* p) const;
76 void TransformNormal(float* n) const;
77
78private:
79 float scale_;
80 bool to_origin_;
81 geom::Mat4 vertex_tf_;
82 geom::Mat3 normal_tf_;
83};
84
85
86
87}} // ns
88
89#endif
float GetScale() const
Definition exporter.hh:64
void SetScale(float s)
Definition exporter.hh:63
void SetupTransform(const Scene *scene)
virtual void WriteLineData(const unsigned int *ij, size_t count)
Definition exporter.hh:58
void TransformNormal(float *n) const
virtual void WriteVertexData(const float *v, const float *n, const float *c, const float *t, size_t stride, size_t count)
Definition exporter.hh:55
virtual void WriteQuadData(const unsigned int *ijkl, size_t count)
Definition exporter.hh:60
virtual void SceneEnd(const Scene *scene)
Definition exporter.hh:48
void TransformPosition(float *p) const
virtual ~Exporter()
Definition exporter.hh:46
virtual void WritePointData(const unsigned int *i, size_t count)
Definition exporter.hh:57
virtual void SceneStart(const Scene *scene)
Definition exporter.hh:47
virtual void NodeStart(const std::string &name, NodeType t)
Definition exporter.hh:50
void SetToOrigin(bool b)
Definition exporter.hh:68
virtual void WriteTriData(const unsigned int *ijk, size_t count)
Definition exporter.hh:59
virtual void NodeEnd(const std::string &name)
Definition exporter.hh:51
bool GetToOrigin() const
Definition exporter.hh:69
main class for organization and root for the graphical display
Definition scene.hh:80
#define DLLEXPORT_OST_GFX
Definition base.dox:1