libLAS API Reference  1.8.1
reader.hpp
Go to the documentation of this file.
1 /******************************************************************************
2 * $Id$
3 *
4 * Project: libLAS - http://liblas.org - A BSD library for LAS format data.
5 * Purpose: LAS reader class
6 * Author: Mateusz Loskot, mateusz@loskot.net
7 *
8 ******************************************************************************
9 * Copyright (c) 2008, Mateusz Loskot
10 * Copyright (c) 2008, Phil Vachon
11 *
12 * All rights reserved.
13 *
14 * Redistribution and use in source and binary forms, with or without
15 * modification, are permitted provided that the following
16 * conditions are met:
17 *
18 * * Redistributions of source code must retain the above copyright
19 * notice, this list of conditions and the following disclaimer.
20 * * Redistributions in binary form must reproduce the above copyright
21 * notice, this list of conditions and the following disclaimer in
22 * the documentation and/or other materials provided
23 * with the distribution.
24 * * Neither the name of the Martin Isenburg or Iowa Department
25 * of Natural Resources nor the names of its contributors may be
26 * used to endorse or promote products derived from this software
27 * without specific prior written permission.
28 *
29 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
30 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
31 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
32 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
33 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
34 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
35 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
36 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
37 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
38 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
39 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
40 * OF SUCH DAMAGE.
41 ****************************************************************************/
42 
43 #ifndef LIBLAS_LASREADER_HPP_INCLUDED
44 #define LIBLAS_LASREADER_HPP_INCLUDED
45 
46 #include <liblas/header.hpp>
47 #include <liblas/point.hpp>
50 #include <liblas/transform.hpp>
51 #include <liblas/filter.hpp>
52 #include <liblas/export.hpp>
53 // boost
54 #include <boost/cstdint.hpp>
55 // std
56 #include <cstddef>
57 #include <iosfwd>
58 #include <memory>
59 #include <string>
60 #include <vector>
61 
62 namespace liblas {
63 
64 
67 {
68 public:
69 
73  Reader(std::istream& ifs);
74  Reader(ReaderIPtr reader);
75 
76  Reader(Reader const& other);
77  Reader& operator=(Reader const& rhs);
78 
79 
82  ~Reader();
83 
86  Header const& GetHeader() const;
87 
88  void SetHeader(Header const& );
89 
92  Point const& GetPoint() const;
93 
96  bool ReadNextPoint();
97 
100  bool ReadPointAt(std::size_t n);
101 
104  void Reset();
105 
109  bool Seek(std::size_t n);
110 
115  Point const& operator[](std::size_t n);
116 
122  void SetFilters(std::vector<liblas::FilterPtr> const& filters);
123 
125  std::vector<liblas::FilterPtr> GetFilters() const;
126 
130  void SetTransforms(std::vector<liblas::TransformPtr> const& transforms);
131 
133  std::vector<liblas::TransformPtr> GetTransforms() const;
134 
135 private:
136 
137 
138  void Init(); // throws on error
139 
140  ReaderIPtr m_pimpl;
141 
142 
143 };
144 
145 } // namespace liblas
146 
147 #endif // ndef LIBLAS_LASREADER_HPP_INCLUDED
#define LAS_DLL
Definition: export.hpp:58
Defines public interface to LAS reader implementation.
Definition: reader.hpp:66
Namespace grouping all elements of libLAS public interface.
Definition: bounds.hpp:60
Point data record composed with X, Y, Z coordinates and attributes.
Definition: point.hpp:68
Definition of public header block.
Definition: header.hpp:78