MVE - Multi-View Environment mve-devel
Loading...
Searching...
No Matches
scene.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2015, Simon Fuhrmann
3 * TU Darmstadt - Graphics, Capture and Massively Parallel Computing
4 * All rights reserved.
5 *
6 * This software may be modified and distributed under the terms
7 * of the BSD 3-Clause license. See the LICENSE.txt file for details.
8 */
9
10#ifndef MVE_SCENE_HEADER
11#define MVE_SCENE_HEADER
12
13#include <vector>
14#include <string>
15#include <memory>
16
17#include "mve/defines.h"
18#include "mve/view.h"
19#include "mve/bundle.h"
20
21#define MVE_SCENE_VIEWS_DIR "views/"
22#define MVE_SCENE_BUNDLE_FILE "synth_0.out"
23
25
34class Scene
35{
36public:
37 typedef std::shared_ptr<Scene> Ptr;
38 typedef std::vector<View::Ptr> ViewList;
39
40public:
42 static Scene::Ptr create (std::string const& path);
43
44 Scene(const Scene&) = delete;
45 Scene& operator=(const Scene&) = delete;
46
48 void load_scene (std::string const& base_path);
49
51 ViewList const& get_views (void) const;
53 ViewList& get_views (void);
55 Bundle::ConstPtr get_bundle (void);
57 void set_bundle (Bundle::Ptr bundle);
59 void reset_bundle (void);
60
62 View::Ptr get_view_by_id (std::size_t id);
63
65 void save_scene (void);
67 void save_views (void);
69 void save_bundle (void);
71 void rewrite_all_views (void);
72
74 bool is_dirty (void) const;
75
77 std::string const& get_path (void) const;
78
80 void cache_cleanup (void);
81
83 std::size_t get_total_mem_usage (void);
85 std::size_t get_view_mem_usage (void);
87 std::size_t get_bundle_mem_usage (void);
88
89protected:
90 Scene (void);
91
92private:
93 std::string basedir;
94 ViewList views;
95 Bundle::Ptr bundle;
96 bool bundle_dirty;
97
98private:
99 void init_views (void);
100};
101
102/* ---------------------------------------------------------------- */
103
104inline
105Scene::Scene (void)
106 : bundle_dirty(false)
107{
108}
109
110inline Scene::Ptr
111Scene::create (std::string const& path)
112{
113 Scene::Ptr scene(new Scene);
114 scene->load_scene(path);
115 return scene;
116}
117
118inline Scene::ViewList const&
120{
121 return this->views;
122}
123
124inline Scene::ViewList&
126{
127 return this->views;
128}
129
130inline View::Ptr
131Scene::get_view_by_id (std::size_t id)
132{
133 return (id < this->views.size() ? this->views[id] : View::Ptr());
134}
135
136inline std::string const&
137Scene::get_path (void) const
138{
139 return this->basedir;
140}
141
142inline void
144{
145 this->bundle_dirty = true;
146 this->bundle = bundle;
147}
148
149inline void
151{
152 this->bundle.reset();
153 this->bundle_dirty = false;
154}
155
157
158#endif /* MVE_SCENE_HEADER */
std::shared_ptr< Bundle > Ptr
Definition bundle.h:59
std::shared_ptr< Bundle const > ConstPtr
Definition bundle.h:60
Scene representation for the MVE.
Definition scene.h:35
Scene & operator=(const Scene &)=delete
View::Ptr get_view_by_id(std::size_t id)
Returns a view by ID or 0 on failure.
Definition scene.h:131
std::shared_ptr< Scene > Ptr
Definition scene.h:37
void set_bundle(Bundle::Ptr bundle)
Sets a new bundle structure.
Definition scene.h:143
ViewList const & get_views(void) const
Returns the list of views.
Definition scene.h:119
std::string const & get_path(void) const
Returns the base path of the scene.
Definition scene.h:137
std::vector< View::Ptr > ViewList
Definition scene.h:38
void reset_bundle(void)
Resets the bundle file such that it is re-read on get_bundle.
Definition scene.h:150
static Scene::Ptr create(std::string const &path)
Constructs and loads a scene from the given directory.
Definition scene.h:111
void rewrite_all_views(void)
Forces rewriting of all views.
Scene(const Scene &)=delete
std::shared_ptr< View > Ptr
Definition view.h:68
#define MVE_NAMESPACE_BEGIN
Definition defines.h:13
#define MVE_NAMESPACE_END
Definition defines.h:14