cherish
Bookmarks.h
1 #ifndef BOOKMARKS_H
2 #define BOOKMARKS_H
3 
4 #include <osg/Group>
5 #include <osgDB/ObjectWrapper>
6 
7 #include <vector>
8 #include <list>
9 #include <string>
10 
11 #include <QObject>
12 #include <QModelIndex>
13 #include <QListWidgetItem>
14 #include <QPixmap>
15 #include <QVector>
16 
17 #include "../libGUI/ListWidget.h"
18 #include "SceneState.h"
19 
20 class BookmarkWidget;
21 namespace entity {
22 class SceneState;
23 }
24 
25 namespace entity {
26 
48 class Bookmarks : public QObject, public osg::Group
49 {
50  Q_OBJECT
51 
52 public:
54  Bookmarks();
55 
61  Bookmarks(const Bookmarks& parent, osg::CopyOp copyop = osg::CopyOp::SHALLOW_COPY);
62  META_Node(entity, Bookmarks)
63 
64 
65  void setEyes(const std::vector<osg::Vec3d>& eyes);
67  const std::vector<osg::Vec3d>& getEyes() const;
68 
70  void setCenters(const std::vector<osg::Vec3d>& centers);
72  const std::vector<osg::Vec3d>& getCenters() const;
73 
75  void setUps(const std::vector<osg::Vec3d>& ups);
77  const std::vector<osg::Vec3d>& getUps() const;
78 
80  void setNames(const std::vector<std::string>& names);
82  const std::vector<std::string>& getNames() const;
83 
85  void setFovs(const std::vector<double>& fovs);
87  const std::vector<double>& getFovs() const;
88 
91  const entity::SceneState* getSceneState(int row) const;
92 
95 
97  bool replaceSceneState(int row, entity::SceneState* state);
98 
101 
110  void addBookmark(BookmarkWidget* widget, const osg::Vec3d& eye, const osg::Vec3d& center, const osg::Vec3d& up, const std::string& name, const double& fov);
111 
113  void updateBookmark(BookmarkWidget* widget, int row);
114 
120  void deleteBookmark(BookmarkWidget* widget, const QModelIndex& index);
121 
128  void resetModel(BookmarkWidget* widget);
129 
131  void clearModel();
132 
135  std::string getBookmarkName(int row) const;
136 
138  int getNumBookmarks() const;
139 
140  bool editBookmarkPose(int index, const osg::Vec3f& eye, const osg::Vec3f& center, const osg::Vec3f& up, double fov);
141 
142 signals:
145  void requestBookmarkSet(int row);
146 
150 
155 
156 public slots:
160  void onClicked(const QModelIndex& index);
161 
165  void onItemChanged(QListWidgetItem* item);
166 
168  void onRowsMoved(const QModelIndex&, int start, int end, const QModelIndex&, int row);
169 
174  void onRowsRemoved(const QModelIndex&, int first, int last);
175 
176 private:
177  template <typename T>
178  bool moveItem(size_t from, size_t to, std::vector<T>& list);
179 
180  void deleteBookmarkData(int first, int last);
181 
182  std::vector<osg::Vec3d> m_eyes;
183  std::vector<osg::Vec3d> m_centers;
184  std::vector<osg::Vec3d> m_ups;
185  std::vector<std::string> m_names;
186  std::vector<double> m_fovs;
187 
188  int m_row;
189 };
190 }
191 
192 
193 #endif // BOOKMARKS_H
void setUps(const std::vector< osg::Vec3d > &ups)
Definition: Bookmarks.cpp:53
std::string getBookmarkName(int row) const
Definition: Bookmarks.cpp:204
void onItemChanged(QListWidgetItem *item)
Definition: Bookmarks.cpp:245
A proxy class that helps to connect scene graph camera positions (in format eye, center, up and name) with the corresponding BookmarkWidget.
Definition: Bookmarks.h:48
const std::vector< double > & getFovs() const
Definition: Bookmarks.cpp:78
void requestSceneData(entity::SceneState *state)
void onRowsRemoved(const QModelIndex &, int first, int last)
Definition: Bookmarks.cpp:275
void onClicked(const QModelIndex &index)
Definition: Bookmarks.cpp:232
bool replaceSceneState(int row, entity::SceneState *state)
Definition: Bookmarks.cpp:101
Scene graph entities.
Definition: AddEntityCommand.h:17
const entity::SceneState * getSceneState(int row) const
Definition: Bookmarks.cpp:83
const std::vector< osg::Vec3d > & getCenters() const
Definition: Bookmarks.cpp:48
void resetModel(BookmarkWidget *widget)
Definition: Bookmarks.cpp:177
void onRowsMoved(const QModelIndex &, int start, int end, const QModelIndex &, int row)
Definition: Bookmarks.cpp:258
void setNames(const std::vector< std::string > &names)
Definition: Bookmarks.cpp:63
Bookmarks()
Definition: Bookmarks.cpp:10
void addBookmark(BookmarkWidget *widget, const osg::Vec3d &eye, const osg::Vec3d &center, const osg::Vec3d &up, const std::string &name, const double &fov)
Definition: Bookmarks.cpp:118
const std::vector< osg::Vec3d > & getUps() const
Definition: Bookmarks.cpp:58
void deleteBookmark(BookmarkWidget *widget, const QModelIndex &index)
Definition: Bookmarks.cpp:167
void updateBookmark(BookmarkWidget *widget, int row)
Definition: Bookmarks.cpp:152
int getNumBookmarks() const
Definition: Bookmarks.cpp:212
entity::SceneState * getLastSceneState()
Definition: Bookmarks.cpp:111
void clearModel()
Definition: Bookmarks.cpp:193
const std::vector< std::string > & getNames() const
Definition: Bookmarks.cpp:68
void requestBookmarkSet(int row)
void requestSceneStateSet(entity::SceneState *state)
void setCenters(const std::vector< osg::Vec3d > &centers)
Definition: Bookmarks.cpp:43
void setFovs(const std::vector< double > &fovs)
Definition: Bookmarks.cpp:73
Re-defined QListWidget that contains a method to obtain the corresponding delegate.
Definition: ListWidget.h:18
A class to describe the current state of the scene, e.g., state of switches.
Definition: SceneState.h:29