snark
TextureReader.h
1 // This file is part of snark, a generic and flexible library
2 // for robotics research.
3 //
4 // Copyright (C) 2011 The University of Sydney
5 //
6 // snark is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 3 of the License, or (at your option) any later version.
10 //
11 // snark is distributed in the hope that it will be useful, but WITHOUT ANY
12 // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13 // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
14 // for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with snark. If not, see <http://www.gnu.org/licenses/>.
18 
20 
21 #ifndef SNARK_GRAPHICS_APPLICATIONS_VIEWPOINTS_TEXTURE_READER_H_
22 #define SNARK_GRAPHICS_APPLICATIONS_VIEWPOINTS_TEXTURE_READER_H_
23 
24 
25 #include "./Reader.h"
26 #include <Qt3D/qglbuilder.h>
27 
28 namespace snark { namespace graphics { namespace View {
29 
31 class TextureReader : public Reader
32 {
33  public:
34  TextureReader( QGLView& viewer, comma::csv::options& options, const std::string& file, double width, double height );
35 
36  void start();
37  void update( const Eigen::Vector3d& offset );
38  const Eigen::Vector3d& somePoint() const;
39  bool readOnce();
40  void render( QGLPainter *painter );
41  bool empty() const;
42 
43  protected:
44  boost::scoped_ptr< comma::csv::input_stream< PointWithId > > m_stream;
45  const std::string m_file;
46  QGeometryData m_geometry;
47  QGLBuilder m_builder;
48  QGLSceneNode* m_node;
49  QGLTexture2D m_texture;
50  QImage m_image;
51  QGLMaterial m_material;
52 };
53 
54 } } } // namespace snark { namespace graphics { namespace View {
55 
56 #endif /*SNARK_GRAPHICS_APPLICATIONS_VIEWPOINTS_TEXTURE_READER_H_*/